@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 +1 -0
- package/dist/cli.js +28 -10
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
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
|
|
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>"
|