create-daloy 1.0.0-beta.5 → 1.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -17,6 +17,9 @@ pnpm create daloy@latest my-api
17
17
  npm create daloy@latest my-api
18
18
  yarn create daloy my-api
19
19
  bun create daloy my-api
20
+
21
+ # scaffold into the current directory
22
+ pnpm create daloy@latest .
20
23
  ```
21
24
 
22
25
  The CLI is interactive when arguments are missing. It will ask you for:
@@ -363,6 +363,7 @@ ${heading("Usage")}
363
363
  ${color(COLORS.cyan, "npm")} create daloy@latest ${color(COLORS.dim, "[project-name] [options]")}
364
364
  ${color(COLORS.cyan, "yarn")} create daloy ${color(COLORS.dim, "[project-name] [options]")}
365
365
  ${color(COLORS.cyan, "bun")} create daloy ${color(COLORS.dim, "[project-name] [options]")}
366
+ ${color(COLORS.dim, "Use . as the project name to scaffold into the current directory.")}
366
367
 
367
368
  ${heading("Options")}
368
369
  ${color(COLORS.green, "--template <name>")} ${TEMPLATES.join(" | ")} ${color(COLORS.dim, "(default: node-basic)")}
@@ -568,7 +569,8 @@ const VALID_CODE_OWNER =
568
569
 
569
570
  function validateProjectName(name) {
570
571
  if (!name || !name.trim()) return "Project name cannot be empty.";
571
- if (name === "." || name === "..") return "Use a real directory name.";
572
+ if (name === ".") return true;
573
+ if (name === "..") return "Use a real directory name.";
572
574
  if (name.length > 214) return "Project name is too long (max 214 chars).";
573
575
  if (!VALID_NAME.test(name)) {
574
576
  return "Project name must be a valid npm package name (lowercase, no spaces, no leading dot/underscore).";
@@ -576,6 +578,10 @@ function validateProjectName(name) {
576
578
  return true;
577
579
  }
578
580
 
581
+ function projectPackageName(projectName, cwd) {
582
+ return projectName === "." ? path.basename(cwd).toLowerCase() : projectName;
583
+ }
584
+
579
585
  async function isDirEmpty(dir) {
580
586
  try {
581
587
  const entries = await readdir(dir);
@@ -1677,7 +1683,7 @@ function createSpinner(initialMessage) {
1677
1683
  };
1678
1684
  }
1679
1685
 
1680
- function printSummary({ projectName, template, packageManager, installDeps, skipPackageManager, withCi, withDeploy, missingTools = [] }) {
1686
+ function printSummary({ projectName, shouldChangeDirectory = true, template, packageManager, installDeps, skipPackageManager, withCi, withDeploy, missingTools = [] }) {
1681
1687
  const templateMeta = TEMPLATE_OPTIONS.find((option) => option.value === template);
1682
1688
  const templateLabel = templateMeta ? `${templateMeta.title} ${color(COLORS.dim, `(${template})`)}` : template;
1683
1689
  const summaryLines = [
@@ -1703,7 +1709,9 @@ function printSummary({ projectName, template, packageManager, installDeps, skip
1703
1709
 
1704
1710
  const arrow = color(COLORS.cyan, SYMBOLS.arrow);
1705
1711
  console.log(`${color(COLORS.bold, "Next steps")}`);
1706
- console.log(` ${arrow} ${color(COLORS.cyan, `cd ${projectName}`)}`);
1712
+ if (shouldChangeDirectory) {
1713
+ console.log(` ${arrow} ${color(COLORS.cyan, `cd ${projectName}`)}`);
1714
+ }
1707
1715
  if (skipPackageManager) {
1708
1716
  console.log(` ${arrow} ${color(COLORS.cyan, "deno task dev")}`);
1709
1717
  } else {
@@ -1835,7 +1843,14 @@ async function main() {
1835
1843
  process.exit(1);
1836
1844
  }
1837
1845
 
1838
- const targetDir = path.resolve(process.cwd(), projectName);
1846
+ const cwd = process.cwd();
1847
+ const packageName = projectPackageName(projectName, cwd);
1848
+ const packageNameCheck = projectName === "." ? validateProjectName(packageName) : true;
1849
+ if (packageNameCheck !== true) {
1850
+ logError(`Current directory name "${packageName}" cannot be used as a package name. ${packageNameCheck}`);
1851
+ process.exit(1);
1852
+ }
1853
+ const targetDir = projectName === "." ? cwd : path.resolve(cwd, projectName);
1839
1854
  if (existsSync(targetDir)) {
1840
1855
  const empty = await isDirEmpty(targetDir);
1841
1856
  if (!empty && !opts.force) {
@@ -1927,8 +1942,8 @@ async function main() {
1927
1942
  logStep("Minimal mode applied", `${count} file${count === 1 ? "" : "s"} trimmed`);
1928
1943
  }
1929
1944
  if (!skipPackageManager) {
1930
- await patchPackageJson(targetDir, projectName, packageManager);
1931
- logStep("Package metadata written", projectName);
1945
+ await patchPackageJson(targetDir, packageName, packageManager);
1946
+ logStep("Package metadata written", packageName);
1932
1947
  await patchTemplateTextFiles(targetDir, packageManager);
1933
1948
  await patchDockerignoreForPackageManager(targetDir, packageManager);
1934
1949
  if (packageManager !== "pnpm") {
@@ -1985,13 +2000,23 @@ async function main() {
1985
2000
  if (tail.trim().length > 0) {
1986
2001
  console.error(color(COLORS.dim, tail));
1987
2002
  }
1988
- logWarn(`Retry inside ${projectName} with: ${packageManager} install`);
2003
+ logWarn(`Retry inside ${projectName === "." ? "this directory" : projectName} with: ${packageManager} install`);
1989
2004
  } else {
1990
2005
  spinner.stop(`Installed dependencies with ${color(COLORS.cyan, packageManager)}`);
1991
2006
  }
1992
2007
  }
1993
2008
 
1994
- printSummary({ projectName, template, packageManager, installDeps, skipPackageManager, withCi, withDeploy, missingTools });
2009
+ printSummary({
2010
+ projectName: packageName,
2011
+ shouldChangeDirectory: projectName !== ".",
2012
+ template,
2013
+ packageManager,
2014
+ installDeps,
2015
+ skipPackageManager,
2016
+ withCi,
2017
+ withDeploy,
2018
+ missingTools,
2019
+ });
1995
2020
  } catch (err) {
1996
2021
  rl?.close();
1997
2022
  if (err && err.message === "Cancelled") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-daloy",
3
- "version": "1.0.0-beta.5",
3
+ "version": "1.0.0-beta.7",
4
4
  "description": "Scaffold a new DaloyJS project. Run with `pnpm create daloy`, `npm create daloy@latest`, `yarn create daloy`, or `bun create daloy`.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/sbom.cdx.json CHANGED
@@ -1,25 +1,25 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
- "serialNumber": "urn:uuid:b7fc0806-0eba-57f4-8949-d430e24d329a",
4
+ "serialNumber": "urn:uuid:e2d088ad-a90f-56b0-a738-fd1d1aa81e82",
5
5
  "version": 1,
6
6
  "metadata": {
7
- "timestamp": "2026-07-01T13:38:30.022Z",
7
+ "timestamp": "2026-07-02T15:06:50.370Z",
8
8
  "tools": [
9
9
  {
10
10
  "vendor": "DaloyJS",
11
11
  "name": "daloy-generate-sbom",
12
- "version": "1.0.0-beta.5"
12
+ "version": "1.0.0-beta.7"
13
13
  }
14
14
  ],
15
15
  "authors": [],
16
16
  "component": {
17
17
  "type": "library",
18
- "bom-ref": "pkg:npm/create-daloy@1.0.0-beta.5",
18
+ "bom-ref": "pkg:npm/create-daloy@1.0.0-beta.7",
19
19
  "name": "create-daloy",
20
- "version": "1.0.0-beta.5",
20
+ "version": "1.0.0-beta.7",
21
21
  "description": "Scaffold a new DaloyJS project. Run with `pnpm create daloy`, `npm create daloy@latest`, `yarn create daloy`, or `bun create daloy`.",
22
- "purl": "pkg:npm/create-daloy@1.0.0-beta.5",
22
+ "purl": "pkg:npm/create-daloy@1.0.0-beta.7",
23
23
  "licenses": [
24
24
  {
25
25
  "license": {
@@ -42,9 +42,9 @@
42
42
  }
43
43
  ],
44
44
  "swid": {
45
- "tagId": "swidtag-create-daloy-1.0.0-beta.5",
45
+ "tagId": "swidtag-create-daloy-1.0.0-beta.7",
46
46
  "name": "create-daloy",
47
- "version": "1.0.0-beta.5",
47
+ "version": "1.0.0-beta.7",
48
48
  "tagVersion": 0,
49
49
  "patch": false
50
50
  }
@@ -53,7 +53,7 @@
53
53
  "components": [],
54
54
  "dependencies": [
55
55
  {
56
- "ref": "pkg:npm/create-daloy@1.0.0-beta.5",
56
+ "ref": "pkg:npm/create-daloy@1.0.0-beta.7",
57
57
  "dependsOn": []
58
58
  }
59
59
  ]
package/sbom.spdx.json CHANGED
@@ -2,10 +2,10 @@
2
2
  "spdxVersion": "SPDX-2.3",
3
3
  "dataLicense": "CC0-1.0",
4
4
  "SPDXID": "SPDXRef-DOCUMENT",
5
- "name": "create-daloy-1.0.0-beta.5",
6
- "documentNamespace": "https://github.com/daloyjs/daloy/sbom/create-daloy-1.0.0-beta.5-b7fc0806-0eba-57f4-8949-d430e24d329a",
5
+ "name": "create-daloy-1.0.0-beta.7",
6
+ "documentNamespace": "https://github.com/daloyjs/daloy/sbom/create-daloy-1.0.0-beta.7-e2d088ad-a90f-56b0-a738-fd1d1aa81e82",
7
7
  "creationInfo": {
8
- "created": "2026-07-01T13:38:30.022Z",
8
+ "created": "2026-07-02T15:06:50.370Z",
9
9
  "creators": [
10
10
  "Tool: daloy-generate-sbom",
11
11
  "Organization: DaloyJS"
@@ -16,7 +16,7 @@
16
16
  {
17
17
  "SPDXID": "SPDXRef-Package-create-daloy",
18
18
  "name": "create-daloy",
19
- "versionInfo": "1.0.0-beta.5",
19
+ "versionInfo": "1.0.0-beta.7",
20
20
  "downloadLocation": "https://github.com/daloyjs/daloy",
21
21
  "filesAnalyzed": false,
22
22
  "licenseConcluded": "MIT",
@@ -27,7 +27,7 @@
27
27
  {
28
28
  "referenceCategory": "PACKAGE-MANAGER",
29
29
  "referenceType": "purl",
30
- "referenceLocator": "pkg:npm/create-daloy@1.0.0-beta.5"
30
+ "referenceLocator": "pkg:npm/create-daloy@1.0.0-beta.7"
31
31
  }
32
32
  ]
33
33
  }
@@ -19,7 +19,7 @@
19
19
  "hooks:install": "git config core.hooksPath .githooks"
20
20
  },
21
21
  "dependencies": {
22
- "@daloyjs/core": "^1.0.0-beta.5",
22
+ "@daloyjs/core": "^1.0.0-beta.7",
23
23
  "zod": "^4.4.3"
24
24
  },
25
25
  "devDependencies": {
@@ -13,7 +13,7 @@
13
13
  "hooks:install": "git config core.hooksPath .githooks"
14
14
  },
15
15
  "dependencies": {
16
- "@daloyjs/core": "^1.0.0-beta.5",
16
+ "@daloyjs/core": "^1.0.0-beta.7",
17
17
  "zod": "^4.4.3"
18
18
  },
19
19
  "devDependencies": {
@@ -10,11 +10,11 @@
10
10
  "hooks:install": "git config core.hooksPath .githooks"
11
11
  },
12
12
  "imports": {
13
- "@daloyjs/core": "jsr:@daloyjs/daloy@^1.0.0-beta.5",
14
- "@daloyjs/core/banner": "jsr:@daloyjs/daloy@^1.0.0-beta.5/banner",
15
- "@daloyjs/core/contract": "jsr:@daloyjs/daloy@^1.0.0-beta.5/contract",
16
- "@daloyjs/core/deno": "jsr:@daloyjs/daloy@^1.0.0-beta.5/deno",
17
- "@daloyjs/core/openapi": "jsr:@daloyjs/daloy@^1.0.0-beta.5/openapi",
13
+ "@daloyjs/core": "jsr:@daloyjs/daloy@^1.0.0-beta.7",
14
+ "@daloyjs/core/banner": "jsr:@daloyjs/daloy@^1.0.0-beta.7/banner",
15
+ "@daloyjs/core/contract": "jsr:@daloyjs/daloy@^1.0.0-beta.7/contract",
16
+ "@daloyjs/core/deno": "jsr:@daloyjs/daloy@^1.0.0-beta.7/deno",
17
+ "@daloyjs/core/openapi": "jsr:@daloyjs/daloy@^1.0.0-beta.7/openapi",
18
18
  "zod": "npm:zod@^4.4.3"
19
19
  },
20
20
  "compilerOptions": {
@@ -20,7 +20,7 @@
20
20
  "hooks:install": "git config core.hooksPath .githooks"
21
21
  },
22
22
  "dependencies": {
23
- "@daloyjs/core": "^1.0.0-beta.5",
23
+ "@daloyjs/core": "^1.0.0-beta.7",
24
24
  "zod": "^4.4.3"
25
25
  },
26
26
  "devDependencies": {
@@ -13,7 +13,7 @@
13
13
  "hooks:install": "git config core.hooksPath .githooks"
14
14
  },
15
15
  "dependencies": {
16
- "@daloyjs/core": "^1.0.0-beta.5",
16
+ "@daloyjs/core": "^1.0.0-beta.7",
17
17
  "zod": "^4.4.3"
18
18
  },
19
19
  "devDependencies": {