@nx/workspace 0.0.0-pr-22179-271588f

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.
Files changed (190) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +66 -0
  3. package/executors.json +11 -0
  4. package/generators.d.ts +5 -0
  5. package/generators.js +13 -0
  6. package/generators.json +59 -0
  7. package/index.d.ts +12 -0
  8. package/index.js +33 -0
  9. package/migrations.json +90 -0
  10. package/package.json +76 -0
  11. package/presets/core.json +11 -0
  12. package/presets/npm.json +7 -0
  13. package/src/core/file-utils.d.ts +1 -0
  14. package/src/core/file-utils.js +4 -0
  15. package/src/core/project-graph.d.ts +1 -0
  16. package/src/core/project-graph.js +4 -0
  17. package/src/executors/counter/counter.impl.d.ts +12 -0
  18. package/src/executors/counter/counter.impl.js +40 -0
  19. package/src/executors/counter/schema.json +20 -0
  20. package/src/generators/ci-workflow/ci-workflow.d.ts +6 -0
  21. package/src/generators/ci-workflow/ci-workflow.js +60 -0
  22. package/src/generators/ci-workflow/files/azure/azure-pipelines.yml__tmpl__ +54 -0
  23. package/src/generators/ci-workflow/files/bitbucket-pipelines/bitbucket-pipelines.yml__tmpl__ +41 -0
  24. package/src/generators/ci-workflow/files/circleci/.circleci/config.yml__tmpl__ +33 -0
  25. package/src/generators/ci-workflow/files/github/.github/workflows/__workflowFileName__.yml__tmpl__ +38 -0
  26. package/src/generators/ci-workflow/files/gitlab/.gitlab-ci.yml__tmpl__ +24 -0
  27. package/src/generators/ci-workflow/schema.json +38 -0
  28. package/src/generators/convert-to-monorepo/convert-to-monorepo.d.ts +3 -0
  29. package/src/generators/convert-to-monorepo/convert-to-monorepo.js +41 -0
  30. package/src/generators/convert-to-monorepo/schema.json +16 -0
  31. package/src/generators/convert-to-nx-project/convert-to-nx-project.d.ts +5 -0
  32. package/src/generators/convert-to-nx-project/convert-to-nx-project.js +79 -0
  33. package/src/generators/convert-to-nx-project/schema.d.ts +7 -0
  34. package/src/generators/convert-to-nx-project/schema.json +38 -0
  35. package/src/generators/move/lib/check-destination.d.ts +11 -0
  36. package/src/generators/move/lib/check-destination.js +21 -0
  37. package/src/generators/move/lib/create-project-configuration-in-new-destination.d.ts +3 -0
  38. package/src/generators/move/lib/create-project-configuration-in-new-destination.js +54 -0
  39. package/src/generators/move/lib/extract-base-configs.d.ts +4 -0
  40. package/src/generators/move/lib/extract-base-configs.js +43 -0
  41. package/src/generators/move/lib/move-project-files.d.ts +8 -0
  42. package/src/generators/move/lib/move-project-files.js +60 -0
  43. package/src/generators/move/lib/normalize-schema.d.ts +3 -0
  44. package/src/generators/move/lib/normalize-schema.js +183 -0
  45. package/src/generators/move/lib/run-angular-plugin.d.ts +3 -0
  46. package/src/generators/move/lib/run-angular-plugin.js +19 -0
  47. package/src/generators/move/lib/update-build-targets.d.ts +6 -0
  48. package/src/generators/move/lib/update-build-targets.js +53 -0
  49. package/src/generators/move/lib/update-cypress-config.d.ts +10 -0
  50. package/src/generators/move/lib/update-cypress-config.js +40 -0
  51. package/src/generators/move/lib/update-default-project.d.ts +10 -0
  52. package/src/generators/move/lib/update-default-project.js +20 -0
  53. package/src/generators/move/lib/update-eslint-config.d.ts +8 -0
  54. package/src/generators/move/lib/update-eslint-config.js +33 -0
  55. package/src/generators/move/lib/update-implicit-dependencies.d.ts +6 -0
  56. package/src/generators/move/lib/update-implicit-dependencies.js +19 -0
  57. package/src/generators/move/lib/update-imports.d.ts +8 -0
  58. package/src/generators/move/lib/update-imports.js +182 -0
  59. package/src/generators/move/lib/update-jest-config.d.ts +10 -0
  60. package/src/generators/move/lib/update-jest-config.js +49 -0
  61. package/src/generators/move/lib/update-package-json.d.ts +8 -0
  62. package/src/generators/move/lib/update-package-json.js +24 -0
  63. package/src/generators/move/lib/update-project-root-files.d.ts +12 -0
  64. package/src/generators/move/lib/update-project-root-files.js +87 -0
  65. package/src/generators/move/lib/update-readme.d.ts +8 -0
  66. package/src/generators/move/lib/update-readme.js +21 -0
  67. package/src/generators/move/lib/update-storybook-config.d.ts +10 -0
  68. package/src/generators/move/lib/update-storybook-config.js +43 -0
  69. package/src/generators/move/lib/utils.d.ts +22 -0
  70. package/src/generators/move/lib/utils.js +49 -0
  71. package/src/generators/move/move.d.ts +5 -0
  72. package/src/generators/move/move.js +63 -0
  73. package/src/generators/move/schema.d.ts +15 -0
  74. package/src/generators/move/schema.json +59 -0
  75. package/src/generators/new/files-integrated-repo/__dot__editorconfig +13 -0
  76. package/src/generators/new/files-integrated-repo/__dot__gitignore +41 -0
  77. package/src/generators/new/files-integrated-repo/__dot__vscode/extensions.json__tmpl__ +9 -0
  78. package/src/generators/new/files-integrated-repo/package.json__tmpl__ +14 -0
  79. package/src/generators/new/files-package-based-repo/__dot__gitignore +41 -0
  80. package/src/generators/new/files-package-based-repo/__dot__vscode/extensions.json__tmpl__ +8 -0
  81. package/src/generators/new/files-package-based-repo/package.json__tmpl__ +13 -0
  82. package/src/generators/new/files-readme/README.md.template +89 -0
  83. package/src/generators/new/files-root-app/__dot__gitignore +41 -0
  84. package/src/generators/new/files-root-app/__dot__vscode/extensions.json__tmpl__ +6 -0
  85. package/src/generators/new/files-root-app/package.json__tmpl__ +17 -0
  86. package/src/generators/new/generate-preset.d.ts +4 -0
  87. package/src/generators/new/generate-preset.js +162 -0
  88. package/src/generators/new/generate-workspace-files.d.ts +3 -0
  89. package/src/generators/new/generate-workspace-files.js +190 -0
  90. package/src/generators/new/new.d.ts +30 -0
  91. package/src/generators/new/new.js +84 -0
  92. package/src/generators/new/schema.json +92 -0
  93. package/src/generators/npm-package/files/index.js.template +1 -0
  94. package/src/generators/npm-package/npm-package.d.ts +9 -0
  95. package/src/generators/npm-package/npm-package.js +53 -0
  96. package/src/generators/npm-package/schema.json +31 -0
  97. package/src/generators/preset/preset.d.ts +4 -0
  98. package/src/generators/preset/preset.js +301 -0
  99. package/src/generators/preset/schema.d.ts +22 -0
  100. package/src/generators/preset/schema.json +109 -0
  101. package/src/generators/remove/lib/__fixtures__/jest-project.config.d.ts +14 -0
  102. package/src/generators/remove/lib/__fixtures__/jest-project.config.js +17 -0
  103. package/src/generators/remove/lib/__fixtures__/jest.config.d.ts +0 -0
  104. package/src/generators/remove/lib/__fixtures__/jest.config.js +8 -0
  105. package/src/generators/remove/lib/check-dependencies.d.ts +7 -0
  106. package/src/generators/remove/lib/check-dependencies.js +23 -0
  107. package/src/generators/remove/lib/check-project-is-safe-to-remove.d.ts +3 -0
  108. package/src/generators/remove/lib/check-project-is-safe-to-remove.js +25 -0
  109. package/src/generators/remove/lib/check-targets.d.ts +10 -0
  110. package/src/generators/remove/lib/check-targets.js +68 -0
  111. package/src/generators/remove/lib/remove-project-references-in-config.d.ts +3 -0
  112. package/src/generators/remove/lib/remove-project-references-in-config.js +21 -0
  113. package/src/generators/remove/lib/remove-project.d.ts +5 -0
  114. package/src/generators/remove/lib/remove-project.js +14 -0
  115. package/src/generators/remove/lib/update-jest-config.d.ts +6 -0
  116. package/src/generators/remove/lib/update-jest-config.js +75 -0
  117. package/src/generators/remove/lib/update-tsconfig.d.ts +8 -0
  118. package/src/generators/remove/lib/update-tsconfig.js +31 -0
  119. package/src/generators/remove/remove.d.ts +4 -0
  120. package/src/generators/remove/remove.js +26 -0
  121. package/src/generators/remove/schema.d.ts +10 -0
  122. package/src/generators/remove/schema.json +47 -0
  123. package/src/generators/run-commands/run-commands.d.ts +4 -0
  124. package/src/generators/run-commands/run-commands.js +25 -0
  125. package/src/generators/run-commands/schema.d.ts +8 -0
  126. package/src/generators/run-commands/schema.json +49 -0
  127. package/src/generators/utils/get-npm-package-version.d.ts +1 -0
  128. package/src/generators/utils/get-npm-package-version.js +21 -0
  129. package/src/generators/utils/insert-import.d.ts +2 -0
  130. package/src/generators/utils/insert-import.js +47 -0
  131. package/src/generators/utils/insert-statement.d.ts +5 -0
  132. package/src/generators/utils/insert-statement.js +33 -0
  133. package/src/generators/utils/jest-config.d.ts +2 -0
  134. package/src/generators/utils/jest-config.js +13 -0
  135. package/src/generators/utils/presets.d.ts +29 -0
  136. package/src/generators/utils/presets.js +34 -0
  137. package/src/migrations/update-15-7-0/split-configuration-into-project-json-files.d.ts +3 -0
  138. package/src/migrations/update-15-7-0/split-configuration-into-project-json-files.js +11 -0
  139. package/src/migrations/update-16-0-0/fix-invalid-babelrc.d.ts +2 -0
  140. package/src/migrations/update-16-0-0/fix-invalid-babelrc.js +41 -0
  141. package/src/migrations/update-16-0-0/move-workspace-generators-to-local-plugin.d.ts +2 -0
  142. package/src/migrations/update-16-0-0/move-workspace-generators-to-local-plugin.js +187 -0
  143. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
  144. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +9 -0
  145. package/src/tasks-runner/cache.d.ts +1 -0
  146. package/src/tasks-runner/cache.js +5 -0
  147. package/src/tasks-runner/default-tasks-runner.d.ts +1 -0
  148. package/src/tasks-runner/default-tasks-runner.js +4 -0
  149. package/src/tasks-runner/life-cycle.d.ts +1 -0
  150. package/src/tasks-runner/life-cycle.js +5 -0
  151. package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.d.ts +1 -0
  152. package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.js +4 -0
  153. package/src/tasks-runner/tasks-runner.d.ts +2 -0
  154. package/src/tasks-runner/tasks-runner.js +4 -0
  155. package/src/tasks-runner/utils.d.ts +1 -0
  156. package/src/tasks-runner/utils.js +4 -0
  157. package/src/utilities/app-root.d.ts +1 -0
  158. package/src/utilities/app-root.js +4 -0
  159. package/src/utilities/default-base.d.ts +1 -0
  160. package/src/utilities/default-base.js +15 -0
  161. package/src/utilities/fileutils.d.ts +13 -0
  162. package/src/utilities/fileutils.js +51 -0
  163. package/src/utilities/get-import-path.d.ts +3 -0
  164. package/src/utilities/get-import-path.js +20 -0
  165. package/src/utilities/output.d.ts +1 -0
  166. package/src/utilities/output.js +4 -0
  167. package/src/utilities/ts-config.d.ts +7 -0
  168. package/src/utilities/ts-config.js +67 -0
  169. package/src/utilities/typescript/compilation.d.ts +22 -0
  170. package/src/utilities/typescript/compilation.js +120 -0
  171. package/src/utilities/typescript/get-source-nodes.d.ts +5 -0
  172. package/src/utilities/typescript/get-source-nodes.js +21 -0
  173. package/src/utilities/typescript.d.ts +13 -0
  174. package/src/utilities/typescript.js +55 -0
  175. package/src/utils/ast-utils.d.ts +1 -0
  176. package/src/utils/ast-utils.js +5 -0
  177. package/src/utils/cli-config-utils.d.ts +16 -0
  178. package/src/utils/cli-config-utils.js +29 -0
  179. package/src/utils/lint.d.ts +4 -0
  180. package/src/utils/lint.js +2 -0
  181. package/src/utils/output.d.ts +52 -0
  182. package/src/utils/output.js +133 -0
  183. package/src/utils/perf-logging.d.ts +1 -0
  184. package/src/utils/perf-logging.js +10 -0
  185. package/src/utils/project-type.d.ts +5 -0
  186. package/src/utils/project-type.js +17 -0
  187. package/src/utils/versions.d.ts +3 -0
  188. package/src/utils/versions.js +8 -0
  189. package/tasks-runners/default.d.ts +1 -0
  190. package/tasks-runners/default.js +5 -0
@@ -0,0 +1,92 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "NxWorkspaceNew",
4
+ "title": "Create an empty workspace",
5
+ "description": "Create an empty workspace.",
6
+ "type": "object",
7
+ "cli": "nx",
8
+ "properties": {
9
+ "name": {
10
+ "description": "The name of the workspace.",
11
+ "type": "string",
12
+ "$default": {
13
+ "$source": "argv",
14
+ "index": 0
15
+ },
16
+ "x-prompt": "What name would you like to use for the workspace?"
17
+ },
18
+ "style": {
19
+ "description": "The file extension to be used for style files.",
20
+ "type": "string",
21
+ "default": "css"
22
+ },
23
+ "routing": {
24
+ "description": "Add routing to the generated application.",
25
+ "type": "boolean",
26
+ "default": true
27
+ },
28
+ "standaloneApi": {
29
+ "description": "Use Standalone Components if generating an Angular application.",
30
+ "type": "boolean",
31
+ "default": false
32
+ },
33
+ "defaultBase": {
34
+ "type": "string",
35
+ "description": "Default base branch for affected."
36
+ },
37
+ "skipInstall": {
38
+ "description": "Skip installing dependency packages.",
39
+ "type": "boolean",
40
+ "default": false
41
+ },
42
+ "preset": {
43
+ "description": "What to create in the new workspace.",
44
+ "type": "string"
45
+ },
46
+ "appName": {
47
+ "type": "string",
48
+ "description": "Application name."
49
+ },
50
+ "linter": {
51
+ "description": "The tool to use for running lint checks.",
52
+ "type": "string",
53
+ "enum": ["eslint"],
54
+ "default": "eslint"
55
+ },
56
+ "packageManager": {
57
+ "description": "The package manager used to install dependencies.",
58
+ "type": "string",
59
+ "enum": ["npm", "yarn", "pnpm"]
60
+ },
61
+ "framework": {
62
+ "description": "The framework which the application is using",
63
+ "type": "string",
64
+ "enum": ["express", "koa", "fastify", "nest", "none"]
65
+ },
66
+ "nextAppDir": {
67
+ "description": "Enable the App Router for this project.",
68
+ "type": "boolean",
69
+ "default": true
70
+ },
71
+ "nextSrcDir": {
72
+ "description": "Generate a `src` directory for this project.",
73
+ "type": "boolean",
74
+ "default": true
75
+ },
76
+ "e2eTestRunner": {
77
+ "description": "The tool to use for running e2e tests.",
78
+ "type": "string",
79
+ "enum": ["cypress", "playwright", "jest", "detox", "none"]
80
+ },
81
+ "ssr": {
82
+ "description": "Enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering) for the Angular application.",
83
+ "type": "boolean",
84
+ "default": false
85
+ },
86
+ "prefix": {
87
+ "description": "The prefix to use for Angular component and directive selectors.",
88
+ "type": "string"
89
+ }
90
+ },
91
+ "additionalProperties": true
92
+ }
@@ -0,0 +1 @@
1
+ console.log('Hello World');
@@ -0,0 +1,9 @@
1
+ import { Tree } from '@nx/devkit';
2
+ import { type ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils';
3
+ export interface ProjectOptions {
4
+ name: string;
5
+ directory?: string;
6
+ projectNameAndRootFormat?: ProjectNameAndRootFormat;
7
+ }
8
+ export declare function npmPackageGenerator(tree: Tree, options: ProjectOptions): Promise<void>;
9
+ export declare function npmPackageGeneratorInternal(tree: Tree, _options: ProjectOptions): Promise<void>;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.npmPackageGeneratorInternal = exports.npmPackageGenerator = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
6
+ const path_1 = require("path");
7
+ const get_import_path_1 = require("../../utilities/get-import-path");
8
+ async function normalizeOptions(tree, options) {
9
+ const { projectName, projectRoot } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(tree, {
10
+ name: options.name,
11
+ projectType: 'library',
12
+ directory: options.directory,
13
+ projectNameAndRootFormat: options.projectNameAndRootFormat,
14
+ callingGenerator: '@nx/workspace:npm-package',
15
+ });
16
+ return {
17
+ ...options,
18
+ name: projectName,
19
+ projectRoot,
20
+ };
21
+ }
22
+ function addFiles(projectRoot, tree, options) {
23
+ const packageJsonPath = (0, path_1.join)(projectRoot, 'package.json');
24
+ (0, devkit_1.writeJson)(tree, packageJsonPath, {
25
+ name: (0, get_import_path_1.getImportPath)(tree, options.name),
26
+ version: '0.0.0',
27
+ scripts: {
28
+ test: 'node index.js',
29
+ },
30
+ });
31
+ (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, './files'), projectRoot, {});
32
+ }
33
+ async function npmPackageGenerator(tree, options) {
34
+ return await npmPackageGeneratorInternal(tree, {
35
+ projectNameAndRootFormat: 'derived',
36
+ ...options,
37
+ });
38
+ }
39
+ exports.npmPackageGenerator = npmPackageGenerator;
40
+ async function npmPackageGeneratorInternal(tree, _options) {
41
+ const options = await normalizeOptions(tree, _options);
42
+ (0, devkit_1.addProjectConfiguration)(tree, options.name, {
43
+ root: options.projectRoot,
44
+ });
45
+ const fileCount = tree.children(options.projectRoot).length;
46
+ const projectJsonExists = tree.exists((0, path_1.join)(options.projectRoot, 'project.json'));
47
+ const isEmpty = fileCount === 0 || (fileCount === 1 && projectJsonExists);
48
+ if (isEmpty) {
49
+ addFiles(options.projectRoot, tree, options);
50
+ }
51
+ await (0, devkit_1.formatFiles)(tree);
52
+ }
53
+ exports.npmPackageGeneratorInternal = npmPackageGeneratorInternal;
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "NxWorkspaceNpmPackage",
4
+ "title": "Add a minimal npm package",
5
+ "description": "Add a minimal npm package.",
6
+ "cli": "nx",
7
+ "type": "object",
8
+ "properties": {
9
+ "name": {
10
+ "type": "string",
11
+ "description": "Package name.",
12
+ "$default": {
13
+ "$source": "argv",
14
+ "index": 0
15
+ },
16
+ "x-prompt": "What name of your npm package?",
17
+ "pattern": "(?:^@[a-zA-Z0-9-*~][a-zA-Z0-9-*._~]*\\/[a-zA-Z0-9-~][a-zA-Z0-9-._~]*|^[a-zA-Z][^:]*)$"
18
+ },
19
+ "directory": {
20
+ "type": "string",
21
+ "description": "A directory where the package is placed.",
22
+ "alias": "dir"
23
+ },
24
+ "projectNameAndRootFormat": {
25
+ "description": "Whether to generate the project name and root directory as provided (`as-provided`) or generate them composing their values and taking the configured layout into account (`derived`).",
26
+ "type": "string",
27
+ "enum": ["as-provided", "derived"]
28
+ }
29
+ },
30
+ "required": ["name"]
31
+ }
@@ -0,0 +1,4 @@
1
+ import { Tree } from '@nx/devkit';
2
+ import { Schema } from './schema';
3
+ export declare function presetGenerator(tree: Tree, options: Schema): Promise<() => Promise<void>>;
4
+ export default presetGenerator;
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.presetGenerator = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const presets_1 = require("../utils/presets");
6
+ const path_1 = require("path");
7
+ async function presetGenerator(tree, options) {
8
+ options = normalizeOptions(options);
9
+ const presetTask = await createPreset(tree, options);
10
+ return async () => {
11
+ (0, devkit_1.installPackagesTask)(tree);
12
+ if (presetTask)
13
+ await presetTask();
14
+ };
15
+ }
16
+ exports.presetGenerator = presetGenerator;
17
+ exports.default = presetGenerator;
18
+ async function createPreset(tree, options) {
19
+ console.log('Crate preset');
20
+ const nxJson = (0, devkit_1.readNxJson)(tree);
21
+ const addPlugin = process.env.NX_ADD_PLUGINS !== 'false' &&
22
+ nxJson.useInferencePlugins !== false;
23
+ console.log('Add plugin', addPlugin);
24
+ console.log(options.preset, presets_1.Preset.ReactNative);
25
+ if (options.preset === presets_1.Preset.Apps) {
26
+ return;
27
+ }
28
+ else if (options.preset === presets_1.Preset.AngularMonorepo) {
29
+ const { applicationGenerator: angularApplicationGenerator, } = require('@nx' + '/angular/generators');
30
+ return angularApplicationGenerator(tree, {
31
+ name: options.name,
32
+ directory: (0, path_1.join)('apps', options.name),
33
+ projectNameAndRootFormat: 'as-provided',
34
+ style: options.style,
35
+ linter: options.linter,
36
+ standalone: options.standaloneApi,
37
+ routing: options.routing,
38
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
39
+ bundler: options.bundler,
40
+ ssr: options.ssr,
41
+ prefix: options.prefix,
42
+ });
43
+ }
44
+ else if (options.preset === presets_1.Preset.AngularStandalone) {
45
+ const { applicationGenerator: angularApplicationGenerator, } = require('@nx' + '/angular/generators');
46
+ return angularApplicationGenerator(tree, {
47
+ name: options.name,
48
+ directory: '.',
49
+ projectNameAndRootFormat: 'as-provided',
50
+ style: options.style,
51
+ linter: options.linter,
52
+ routing: options.routing,
53
+ rootProject: true,
54
+ standalone: options.standaloneApi,
55
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
56
+ bundler: options.bundler,
57
+ ssr: options.ssr,
58
+ prefix: options.prefix,
59
+ });
60
+ }
61
+ else if (options.preset === presets_1.Preset.ReactMonorepo) {
62
+ const { applicationGenerator: reactApplicationGenerator } = require('@nx' +
63
+ '/react');
64
+ return reactApplicationGenerator(tree, {
65
+ name: options.name,
66
+ directory: (0, path_1.join)('apps', options.name),
67
+ projectNameAndRootFormat: 'as-provided',
68
+ style: options.style,
69
+ linter: options.linter,
70
+ bundler: options.bundler ?? 'webpack',
71
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
72
+ addPlugin,
73
+ });
74
+ }
75
+ else if (options.preset === presets_1.Preset.ReactStandalone) {
76
+ const { applicationGenerator: reactApplicationGenerator } = require('@nx' +
77
+ '/react');
78
+ return reactApplicationGenerator(tree, {
79
+ name: options.name,
80
+ directory: '.',
81
+ projectNameAndRootFormat: 'as-provided',
82
+ style: options.style,
83
+ linter: options.linter,
84
+ rootProject: true,
85
+ bundler: options.bundler ?? 'vite',
86
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
87
+ unitTestRunner: options.bundler === 'vite' ? 'vitest' : 'jest',
88
+ addPlugin,
89
+ });
90
+ }
91
+ else if (options.preset === presets_1.Preset.VueMonorepo) {
92
+ const { applicationGenerator: vueApplicationGenerator } = require('@nx' +
93
+ '/vue');
94
+ return vueApplicationGenerator(tree, {
95
+ name: options.name,
96
+ directory: (0, path_1.join)('apps', options.name),
97
+ projectNameAndRootFormat: 'as-provided',
98
+ style: options.style,
99
+ linter: options.linter,
100
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
101
+ addPlugin,
102
+ });
103
+ }
104
+ else if (options.preset === presets_1.Preset.VueStandalone) {
105
+ const { applicationGenerator: vueApplicationGenerator } = require('@nx' +
106
+ '/vue');
107
+ return vueApplicationGenerator(tree, {
108
+ name: options.name,
109
+ directory: '.',
110
+ projectNameAndRootFormat: 'as-provided',
111
+ style: options.style,
112
+ linter: options.linter,
113
+ rootProject: true,
114
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
115
+ unitTestRunner: 'vitest',
116
+ addPlugin,
117
+ });
118
+ }
119
+ else if (options.preset === presets_1.Preset.Nuxt) {
120
+ const { applicationGenerator: nuxtApplicationGenerator } = require('@nx' +
121
+ '/nuxt');
122
+ return nuxtApplicationGenerator(tree, {
123
+ name: options.name,
124
+ directory: (0, path_1.join)('apps', options.name),
125
+ projectNameAndRootFormat: 'as-provided',
126
+ style: options.style,
127
+ linter: options.linter,
128
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
129
+ addPlugin,
130
+ });
131
+ }
132
+ else if (options.preset === presets_1.Preset.NuxtStandalone) {
133
+ const { applicationGenerator: nuxtApplicationGenerator } = require('@nx' +
134
+ '/nuxt');
135
+ return nuxtApplicationGenerator(tree, {
136
+ name: options.name,
137
+ directory: '.',
138
+ projectNameAndRootFormat: 'as-provided',
139
+ style: options.style,
140
+ linter: options.linter,
141
+ rootProject: true,
142
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
143
+ unitTestRunner: 'vitest',
144
+ addPlugin,
145
+ });
146
+ }
147
+ else if (options.preset === presets_1.Preset.NextJs) {
148
+ const { applicationGenerator: nextApplicationGenerator } = require('@nx' +
149
+ '/next');
150
+ return nextApplicationGenerator(tree, {
151
+ name: options.name,
152
+ directory: (0, path_1.join)('apps', options.name),
153
+ projectNameAndRootFormat: 'as-provided',
154
+ style: options.style,
155
+ linter: options.linter,
156
+ appDir: options.nextAppDir,
157
+ src: options.nextSrcDir,
158
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
159
+ addPlugin,
160
+ });
161
+ }
162
+ else if (options.preset === presets_1.Preset.NextJsStandalone) {
163
+ const { applicationGenerator: nextApplicationGenerator } = require('@nx' +
164
+ '/next');
165
+ return nextApplicationGenerator(tree, {
166
+ name: options.name,
167
+ directory: '.',
168
+ projectNameAndRootFormat: 'as-provided',
169
+ style: options.style,
170
+ linter: options.linter,
171
+ appDir: options.nextAppDir,
172
+ src: options.nextSrcDir,
173
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
174
+ rootProject: true,
175
+ addPlugin,
176
+ });
177
+ }
178
+ else if (options.preset === presets_1.Preset.WebComponents) {
179
+ const { applicationGenerator: webApplicationGenerator } = require('@nx' +
180
+ '/web');
181
+ return webApplicationGenerator(tree, {
182
+ name: options.name,
183
+ directory: (0, path_1.join)('apps', options.name),
184
+ projectNameAndRootFormat: 'as-provided',
185
+ style: options.style,
186
+ linter: options.linter,
187
+ bundler: 'vite',
188
+ e2eTestRunner: options.e2eTestRunner ?? 'cypress',
189
+ addPlugin,
190
+ });
191
+ }
192
+ else if (options.preset === presets_1.Preset.Nest) {
193
+ const { applicationGenerator: nestApplicationGenerator } = require('@nx' +
194
+ '/nest');
195
+ return nestApplicationGenerator(tree, {
196
+ name: options.name,
197
+ directory: (0, path_1.join)('apps', options.name),
198
+ projectNameAndRootFormat: 'as-provided',
199
+ linter: options.linter,
200
+ e2eTestRunner: options.e2eTestRunner ?? 'jest',
201
+ addPlugin,
202
+ });
203
+ }
204
+ else if (options.preset === presets_1.Preset.Express) {
205
+ const { applicationGenerator: expressApplicationGenerator, } = require('@nx' + '/express');
206
+ return expressApplicationGenerator(tree, {
207
+ name: options.name,
208
+ directory: (0, path_1.join)('apps', options.name),
209
+ projectNameAndRootFormat: 'as-provided',
210
+ linter: options.linter,
211
+ e2eTestRunner: options.e2eTestRunner ?? 'jest',
212
+ addPlugin,
213
+ });
214
+ }
215
+ else if (options.preset === presets_1.Preset.ReactNative) {
216
+ console.log('Before require');
217
+ const { reactNativeApplicationGenerator } = require('@nx' +
218
+ '/react-native');
219
+ console.log('Hello', reactNativeApplicationGenerator);
220
+ console.log('Active require');
221
+ return reactNativeApplicationGenerator(tree, {
222
+ name: options.name,
223
+ directory: (0, path_1.join)('apps', options.name),
224
+ projectNameAndRootFormat: 'as-provided',
225
+ linter: options.linter,
226
+ e2eTestRunner: options.e2eTestRunner ?? 'detox',
227
+ addPlugin,
228
+ });
229
+ }
230
+ else if (options.preset === presets_1.Preset.Expo) {
231
+ const { expoApplicationGenerator } = require('@nx' + '/expo');
232
+ return expoApplicationGenerator(tree, {
233
+ name: options.name,
234
+ directory: (0, path_1.join)('apps', options.name),
235
+ projectNameAndRootFormat: 'as-provided',
236
+ linter: options.linter,
237
+ e2eTestRunner: options.e2eTestRunner ?? 'detox',
238
+ addPlugin,
239
+ });
240
+ }
241
+ else if (options.preset === presets_1.Preset.TS) {
242
+ const { initGenerator } = require('@nx' + '/js');
243
+ return initGenerator(tree, {});
244
+ }
245
+ else if (options.preset === presets_1.Preset.TsStandalone) {
246
+ const { libraryGenerator } = require('@nx' + '/js');
247
+ return libraryGenerator(tree, {
248
+ name: options.name,
249
+ directory: '.',
250
+ projectNameAndRootFormat: 'as-provided',
251
+ bundler: 'tsc',
252
+ unitTestRunner: 'vitest',
253
+ testEnvironment: 'node',
254
+ js: options.js,
255
+ rootProject: true,
256
+ addPlugin,
257
+ });
258
+ }
259
+ else if (options.preset === presets_1.Preset.NodeStandalone) {
260
+ const { applicationGenerator: nodeApplicationGenerator } = require('@nx' +
261
+ '/node');
262
+ const bundler = options.bundler === 'webpack' ? 'webpack' : 'esbuild';
263
+ return nodeApplicationGenerator(tree, {
264
+ bundler,
265
+ name: options.name,
266
+ directory: '.',
267
+ projectNameAndRootFormat: 'as-provided',
268
+ linter: options.linter,
269
+ standaloneConfig: options.standaloneConfig,
270
+ framework: options.framework,
271
+ docker: options.docker,
272
+ rootProject: true,
273
+ e2eTestRunner: options.e2eTestRunner ?? 'jest',
274
+ addPlugin,
275
+ });
276
+ }
277
+ else if (options.preset === presets_1.Preset.NodeMonorepo) {
278
+ const { applicationGenerator: nodeApplicationGenerator } = require('@nx' +
279
+ '/node');
280
+ const bundler = options.bundler === 'webpack' ? 'webpack' : 'esbuild';
281
+ return nodeApplicationGenerator(tree, {
282
+ bundler,
283
+ name: options.name,
284
+ directory: (0, path_1.join)('apps', options.name),
285
+ projectNameAndRootFormat: 'as-provided',
286
+ linter: options.linter,
287
+ framework: options.framework,
288
+ docker: options.docker,
289
+ rootProject: false,
290
+ e2eTestRunner: options.e2eTestRunner ?? 'jest',
291
+ addPlugin,
292
+ });
293
+ }
294
+ else {
295
+ throw new Error(`Invalid preset ${options.preset}`);
296
+ }
297
+ }
298
+ function normalizeOptions(options) {
299
+ options.name = (0, devkit_1.names)(options.name).fileName;
300
+ return options;
301
+ }
@@ -0,0 +1,22 @@
1
+ import { Preset } from '../utils/presets';
2
+ import { PackageManager } from '@nx/devkit';
3
+
4
+ export interface Schema {
5
+ name: string;
6
+ preset: Preset;
7
+ style?: string;
8
+ linter?: string;
9
+ standaloneConfig?: boolean;
10
+ framework?: string;
11
+ packageManager?: PackageManager;
12
+ bundler?: 'vite' | 'webpack' | 'rspack' | 'esbuild';
13
+ docker?: boolean;
14
+ nextAppDir?: boolean;
15
+ nextSrcDir?: boolean;
16
+ routing?: boolean;
17
+ standaloneApi?: boolean;
18
+ e2eTestRunner?: 'cypress' | 'playwright' | 'jest' | 'detox' | 'none';
19
+ js?: boolean;
20
+ ssr?: boolean;
21
+ prefix?: string;
22
+ }
@@ -0,0 +1,109 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "NxWorkspacePreset",
4
+ "cli": "nx",
5
+ "title": "Creates applications in a new workspace",
6
+ "description": "Creates applications in a new workspace.",
7
+ "type": "object",
8
+ "properties": {
9
+ "preset": {
10
+ "description": "The name of the preset.",
11
+ "type": "string"
12
+ },
13
+ "name": {
14
+ "description": "The name of the application.",
15
+ "type": "string"
16
+ },
17
+ "linter": {
18
+ "description": "The tool to use for running lint checks.",
19
+ "type": "string",
20
+ "enum": ["eslint"],
21
+ "default": "eslint"
22
+ },
23
+ "routing": {
24
+ "description": "Add routing to the generated application.",
25
+ "type": "boolean",
26
+ "default": true
27
+ },
28
+ "style": {
29
+ "description": "The file extension to be used for style files.",
30
+ "type": "string",
31
+ "default": "css",
32
+ "x-prompt": {
33
+ "message": "Which stylesheet format would you like to use?",
34
+ "type": "list",
35
+ "items": [
36
+ {
37
+ "value": "css",
38
+ "label": "CSS"
39
+ },
40
+ {
41
+ "value": "scss",
42
+ "label": "SASS(.scss) [ https://sass-lang.com ]"
43
+ },
44
+ {
45
+ "value": "less",
46
+ "label": "LESS [ https://lesscss.org ]"
47
+ }
48
+ ]
49
+ }
50
+ },
51
+ "standaloneApi": {
52
+ "description": "Use Standalone Components if generating an Angular application.",
53
+ "type": "boolean",
54
+ "default": false
55
+ },
56
+ "standaloneConfig": {
57
+ "description": "Split the project configurations into `<projectRoot>/project.json` rather than including it inside `workspace.json`.",
58
+ "type": "boolean",
59
+ "default": true,
60
+ "x-deprecated": "Nx only supports standaloneConfig"
61
+ },
62
+ "packageManager": {
63
+ "description": "The package manager used to install dependencies.",
64
+ "type": "string",
65
+ "enum": ["npm", "yarn", "pnpm"]
66
+ },
67
+ "framework": {
68
+ "description": "The framework which the application is using",
69
+ "type": "string",
70
+ "enum": ["express", "koa", "fastify", "nest", "none"]
71
+ },
72
+ "bundler": {
73
+ "description": "The bundler to use for building the application.",
74
+ "type": "string",
75
+ "enum": ["webpack", "vite", "rspack", "esbuild"],
76
+ "default": "vite"
77
+ },
78
+ "docker": {
79
+ "description": "Generate a Dockerfile",
80
+ "type": "boolean",
81
+ "default": false
82
+ },
83
+ "nextAppDir": {
84
+ "description": "Enable the App Router for this project.",
85
+ "type": "boolean",
86
+ "default": true
87
+ },
88
+ "nextSrcDir": {
89
+ "description": "Generate a `src` directory for this project.",
90
+ "type": "boolean",
91
+ "default": true
92
+ },
93
+ "e2eTestRunner": {
94
+ "description": "The tool to use for running e2e tests.",
95
+ "type": "string",
96
+ "enum": ["cypress", "playwright", "jest", "detox", "none"]
97
+ },
98
+ "ssr": {
99
+ "description": "Enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering) for the Angular application.",
100
+ "type": "boolean",
101
+ "default": false
102
+ },
103
+ "prefix": {
104
+ "description": "The prefix to use for Angular component and directive selectors.",
105
+ "type": "string"
106
+ }
107
+ },
108
+ "required": ["preset", "name"]
109
+ }
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ displayName: string;
3
+ preset: string;
4
+ testEnvironment: string;
5
+ transform: {
6
+ '^.+\\.[tj]s$': (string | {
7
+ tsconfig: string;
8
+ })[];
9
+ };
10
+ moduleFileExtensions: string[];
11
+ coverageDirectory: string;
12
+ testMatch: string[];
13
+ };
14
+ export default _default;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable */
4
+ exports.default = {
5
+ displayName: 'node-app',
6
+ preset: './jest.preset.js',
7
+ testEnvironment: 'node',
8
+ transform: {
9
+ '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
10
+ },
11
+ moduleFileExtensions: ['ts', 'js', 'html'],
12
+ coverageDirectory: './coverage/node-app',
13
+ testMatch: [
14
+ '<rootDir>/src/**/__tests__/**/*.[jt]s?(x)',
15
+ '<rootDir>/src/**/*(*.)@(spec|test).[jt]s?(x)',
16
+ ],
17
+ };
@@ -0,0 +1,8 @@
1
+ module.exports = {
2
+ projects: [
3
+ '<rootDir>/apps/my-app/',
4
+ '<rootDir>/apps/my-other-app',
5
+ '<rootDir>/libs/my-lib',
6
+ '<rootDir>/libs/my-other-lib/',
7
+ ],
8
+ };