@mnci/cli 4.23.0 → 4.24.0

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
@@ -87,6 +87,7 @@ cd my-repo
87
87
  mnci add react-app web # @nx/react (Vite + Jest)
88
88
  mnci add node-app svc # @nx/node (plain Node app, esbuild)
89
89
  mnci add node-app api --framework express # ...or fastify | koa | nest
90
+ mnci add npm-lib core --empty # slice skeleton only, no sample (also internal-lib, react-lib, react-internal-lib)
90
91
  mnci add node-function-app api # @nx/node + an Azure Functions v4 overlay
91
92
  mnci add npm-lib sdk # @nx/js publishable lib -> packages/
92
93
  mnci add internal-lib utils # @nx/js private lib -> libs/
package/dist/cli.js CHANGED
@@ -2672,11 +2672,11 @@ function projectTask(name, kind) {
2672
2672
  const base = { label: `${name}: ${kind}`, type: "npm", script, problemMatcher: [] };
2673
2673
  return kind === "start" ? { ...base, isBackground: true } : { ...base, group: kind };
2674
2674
  }
2675
- function renameScaffoldPlaceholder(projectRoot, name) {
2676
- reshapeScaffoldSlice(projectRoot, name, "ts", "use-case");
2675
+ function renameScaffoldPlaceholder(projectRoot, name, empty = false) {
2676
+ reshapeScaffoldSlice(projectRoot, name, "ts", "use-case", empty);
2677
2677
  }
2678
- function reshapeReactScaffold(projectRoot, name) {
2679
- reshapeScaffoldSlice(projectRoot, name, "tsx", "component");
2678
+ function reshapeReactScaffold(projectRoot, name, empty = false) {
2679
+ reshapeScaffoldSlice(projectRoot, name, "tsx", "component", empty);
2680
2680
  }
2681
2681
  function reshapeReactAppScaffold(projectRoot) {
2682
2682
  const appDir = (0, import_node_path5.join)(projectRoot, "src", "app");
@@ -2705,7 +2705,14 @@ function reshapeReactAppScaffold(projectRoot) {
2705
2705
  "export * from './app.component'\nexport { default } from './app.component'\n"
2706
2706
  );
2707
2707
  }
2708
- function reshapeScaffoldSlice(projectRoot, name, extension, role) {
2708
+ function emptySlice(projectRoot, sliceDir) {
2709
+ for (const entry of (0, import_node_fs5.readdirSync)(sliceDir)) {
2710
+ (0, import_node_fs5.rmSync)((0, import_node_path5.join)(sliceDir, entry), { recursive: true, force: true });
2711
+ }
2712
+ writeFileEnsured((0, import_node_path5.join)(sliceDir, "index.ts"), "export {}\n");
2713
+ addNxTargets((0, import_node_path5.join)(projectRoot, "package.json"), { test: { options: { passWithNoTests: true } } });
2714
+ }
2715
+ function reshapeScaffoldSlice(projectRoot, name, extension, role, empty) {
2709
2716
  const sourceDir = (0, import_node_path5.join)(projectRoot, "src");
2710
2717
  const libDir = (0, import_node_path5.join)(sourceDir, "lib");
2711
2718
  if (!(0, import_node_fs5.existsSync)((0, import_node_path5.join)(libDir, `${name}.${extension}`))) {
@@ -2735,6 +2742,9 @@ function reshapeScaffoldSlice(projectRoot, name, extension, role) {
2735
2742
  );
2736
2743
  }
2737
2744
  (0, import_node_fs5.rmSync)(libDir, { recursive: true, force: true });
2745
+ if (empty) {
2746
+ emptySlice(projectRoot, sliceDir);
2747
+ }
2738
2748
  }
2739
2749
  function repointSpecifier(source, from, to) {
2740
2750
  let result = source;
@@ -4450,7 +4460,7 @@ async function addNpmLib(workspaceRoot, name, options, kindProvided, stack) {
4450
4460
  repairPublishableManifest(manifestPath);
4451
4461
  repairDeclarationSpecifiers(projectRoot);
4452
4462
  writeProjectReadme(projectRoot, `${scope}/${name}`, stack.testRunner);
4453
- renameScaffoldPlaceholder(projectRoot, name);
4463
+ renameScaffoldPlaceholder(projectRoot, name, options.empty === true);
4454
4464
  removeGeneratedEslintConfig(workspaceRoot, `packages/${name}`);
4455
4465
  removeLocalRegistryScaffolding(workspaceRoot);
4456
4466
  registerProjectCommands(workspaceRoot, name, { build: true });
@@ -4799,14 +4809,14 @@ async function addReactLib(workspaceRoot, name, options, kindProvided, stack) {
4799
4809
  repairPublishableManifest(publishableManifest);
4800
4810
  repairDeclarationSpecifiers(projectRoot);
4801
4811
  writeProjectReadme(projectRoot, `${scope}/${name}`, stack.testRunner);
4802
- reshapeReactScaffold(projectRoot, name);
4812
+ reshapeReactScaffold(projectRoot, name, options.empty === true);
4803
4813
  removeGeneratedEslintConfig(workspaceRoot, `packages/${name}`);
4804
4814
  removeLocalRegistryScaffolding(workspaceRoot);
4805
4815
  registerProjectCommands(workspaceRoot, name, { build: true });
4806
4816
  }
4807
4817
  );
4808
4818
  }
4809
- function addReactInternalLib(workspaceRoot, name, stack) {
4819
+ function addReactInternalLib(workspaceRoot, name, stack, empty = false) {
4810
4820
  ensurePlugin(workspaceRoot, "@nx/react");
4811
4821
  const projectRoot = (0, import_node_path19.join)(workspaceRoot, "libs", name);
4812
4822
  const privateManifest = (0, import_node_path19.join)(projectRoot, "package.json");
@@ -4828,6 +4838,7 @@ function addReactInternalLib(workspaceRoot, name, stack) {
4828
4838
  repairPublishableManifest(privateManifest);
4829
4839
  repairDeclarationSpecifiers(projectRoot);
4830
4840
  writeProjectReadme(projectRoot, name, stack.testRunner);
4841
+ reshapeReactScaffold(projectRoot, name, empty);
4831
4842
  removeGeneratedEslintConfig(workspaceRoot, `libs/${name}`);
4832
4843
  registerProjectCommands(workspaceRoot, name, { build: true });
4833
4844
  }
@@ -6482,6 +6493,7 @@ var PROJECT_KINDS = [
6482
6493
  "csharp-internal-lib",
6483
6494
  "vscode-extension"
6484
6495
  ];
6496
+ var EMPTY_KINDS = /* @__PURE__ */ new Set(["npm-lib", "internal-lib", "react-lib", "react-internal-lib"]);
6485
6497
  async function runAdd(kind, name, options) {
6486
6498
  const workspaceRoot = process.cwd();
6487
6499
  if (!fileExists((0, import_node_path25.join)(workspaceRoot, "nx.json"))) {
@@ -6502,6 +6514,9 @@ async function runAdd(kind, name, options) {
6502
6514
  throw new Error(`${flag} applies to go-app only, not ${resolvedKind}.`);
6503
6515
  }
6504
6516
  }
6517
+ if (options.empty === true && !EMPTY_KINDS.has(resolvedKind)) {
6518
+ throw new Error(`--empty applies to ${[...EMPTY_KINDS].join(", ")}, not ${resolvedKind}.`);
6519
+ }
6505
6520
  const resolvedName = name ?? await promptText("Project name");
6506
6521
  assertValidProjectName(resolvedName, "Project name");
6507
6522
  const rootDependenciesBefore = rootRuntimeDependencies(workspaceRoot);
@@ -6516,7 +6531,7 @@ async function runAdd(kind, name, options) {
6516
6531
  break;
6517
6532
  }
6518
6533
  case "react-internal-lib": {
6519
- addReactInternalLib(workspaceRoot, resolvedName, stack);
6534
+ addReactInternalLib(workspaceRoot, resolvedName, stack, options.empty === true);
6520
6535
  break;
6521
6536
  }
6522
6537
  case "node-app": {
@@ -6545,7 +6560,7 @@ async function runAdd(kind, name, options) {
6545
6560
  workspaceRoot
6546
6561
  );
6547
6562
  markPrivate((0, import_node_path25.join)(workspaceRoot, "libs", resolvedName, "package.json"));
6548
- renameScaffoldPlaceholder((0, import_node_path25.join)(workspaceRoot, "libs", resolvedName), resolvedName);
6563
+ renameScaffoldPlaceholder((0, import_node_path25.join)(workspaceRoot, "libs", resolvedName), resolvedName, options.empty === true);
6549
6564
  removeGeneratedEslintConfig(workspaceRoot, `libs/${resolvedName}`);
6550
6565
  registerProjectCommands(workspaceRoot, resolvedName, { build: true });
6551
6566
  break;
@@ -7640,6 +7655,9 @@ function buildProgram(cliVersion) {
7640
7655
  program.command("add").addArgument(new import_commander.Argument("[kind]", "project kind").choices(PROJECT_KINDS)).argument("[name]", "project name").description("Add a project by delegating to the matching Nx plugin generator").option("--scope <scope>", "npm scope for a publishable lib (defaults to @<workspace name>)").option(
7641
7656
  "--framework <framework>",
7642
7657
  "node-app only: express | fastify | koa | nest | none (default: none)"
7658
+ ).option(
7659
+ "--empty",
7660
+ "npm-lib, internal-lib, react-lib, react-internal-lib: scaffold the slice skeleton only, with no sample code or spec"
7643
7661
  ).option(
7644
7662
  "--lib <name>",
7645
7663
  "python-vendor only: the internal Python library (libs/<name>) to vendor into <name>"