@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.
- package/LICENSE +22 -0
- package/README.md +66 -0
- package/executors.json +11 -0
- package/generators.d.ts +5 -0
- package/generators.js +13 -0
- package/generators.json +59 -0
- package/index.d.ts +12 -0
- package/index.js +33 -0
- package/migrations.json +90 -0
- package/package.json +76 -0
- package/presets/core.json +11 -0
- package/presets/npm.json +7 -0
- package/src/core/file-utils.d.ts +1 -0
- package/src/core/file-utils.js +4 -0
- package/src/core/project-graph.d.ts +1 -0
- package/src/core/project-graph.js +4 -0
- package/src/executors/counter/counter.impl.d.ts +12 -0
- package/src/executors/counter/counter.impl.js +40 -0
- package/src/executors/counter/schema.json +20 -0
- package/src/generators/ci-workflow/ci-workflow.d.ts +6 -0
- package/src/generators/ci-workflow/ci-workflow.js +60 -0
- package/src/generators/ci-workflow/files/azure/azure-pipelines.yml__tmpl__ +54 -0
- package/src/generators/ci-workflow/files/bitbucket-pipelines/bitbucket-pipelines.yml__tmpl__ +41 -0
- package/src/generators/ci-workflow/files/circleci/.circleci/config.yml__tmpl__ +33 -0
- package/src/generators/ci-workflow/files/github/.github/workflows/__workflowFileName__.yml__tmpl__ +38 -0
- package/src/generators/ci-workflow/files/gitlab/.gitlab-ci.yml__tmpl__ +24 -0
- package/src/generators/ci-workflow/schema.json +38 -0
- package/src/generators/convert-to-monorepo/convert-to-monorepo.d.ts +3 -0
- package/src/generators/convert-to-monorepo/convert-to-monorepo.js +41 -0
- package/src/generators/convert-to-monorepo/schema.json +16 -0
- package/src/generators/convert-to-nx-project/convert-to-nx-project.d.ts +5 -0
- package/src/generators/convert-to-nx-project/convert-to-nx-project.js +79 -0
- package/src/generators/convert-to-nx-project/schema.d.ts +7 -0
- package/src/generators/convert-to-nx-project/schema.json +38 -0
- package/src/generators/move/lib/check-destination.d.ts +11 -0
- package/src/generators/move/lib/check-destination.js +21 -0
- package/src/generators/move/lib/create-project-configuration-in-new-destination.d.ts +3 -0
- package/src/generators/move/lib/create-project-configuration-in-new-destination.js +54 -0
- package/src/generators/move/lib/extract-base-configs.d.ts +4 -0
- package/src/generators/move/lib/extract-base-configs.js +43 -0
- package/src/generators/move/lib/move-project-files.d.ts +8 -0
- package/src/generators/move/lib/move-project-files.js +60 -0
- package/src/generators/move/lib/normalize-schema.d.ts +3 -0
- package/src/generators/move/lib/normalize-schema.js +183 -0
- package/src/generators/move/lib/run-angular-plugin.d.ts +3 -0
- package/src/generators/move/lib/run-angular-plugin.js +19 -0
- package/src/generators/move/lib/update-build-targets.d.ts +6 -0
- package/src/generators/move/lib/update-build-targets.js +53 -0
- package/src/generators/move/lib/update-cypress-config.d.ts +10 -0
- package/src/generators/move/lib/update-cypress-config.js +40 -0
- package/src/generators/move/lib/update-default-project.d.ts +10 -0
- package/src/generators/move/lib/update-default-project.js +20 -0
- package/src/generators/move/lib/update-eslint-config.d.ts +8 -0
- package/src/generators/move/lib/update-eslint-config.js +33 -0
- package/src/generators/move/lib/update-implicit-dependencies.d.ts +6 -0
- package/src/generators/move/lib/update-implicit-dependencies.js +19 -0
- package/src/generators/move/lib/update-imports.d.ts +8 -0
- package/src/generators/move/lib/update-imports.js +182 -0
- package/src/generators/move/lib/update-jest-config.d.ts +10 -0
- package/src/generators/move/lib/update-jest-config.js +49 -0
- package/src/generators/move/lib/update-package-json.d.ts +8 -0
- package/src/generators/move/lib/update-package-json.js +24 -0
- package/src/generators/move/lib/update-project-root-files.d.ts +12 -0
- package/src/generators/move/lib/update-project-root-files.js +87 -0
- package/src/generators/move/lib/update-readme.d.ts +8 -0
- package/src/generators/move/lib/update-readme.js +21 -0
- package/src/generators/move/lib/update-storybook-config.d.ts +10 -0
- package/src/generators/move/lib/update-storybook-config.js +43 -0
- package/src/generators/move/lib/utils.d.ts +22 -0
- package/src/generators/move/lib/utils.js +49 -0
- package/src/generators/move/move.d.ts +5 -0
- package/src/generators/move/move.js +63 -0
- package/src/generators/move/schema.d.ts +15 -0
- package/src/generators/move/schema.json +59 -0
- package/src/generators/new/files-integrated-repo/__dot__editorconfig +13 -0
- package/src/generators/new/files-integrated-repo/__dot__gitignore +41 -0
- package/src/generators/new/files-integrated-repo/__dot__vscode/extensions.json__tmpl__ +9 -0
- package/src/generators/new/files-integrated-repo/package.json__tmpl__ +14 -0
- package/src/generators/new/files-package-based-repo/__dot__gitignore +41 -0
- package/src/generators/new/files-package-based-repo/__dot__vscode/extensions.json__tmpl__ +8 -0
- package/src/generators/new/files-package-based-repo/package.json__tmpl__ +13 -0
- package/src/generators/new/files-readme/README.md.template +89 -0
- package/src/generators/new/files-root-app/__dot__gitignore +41 -0
- package/src/generators/new/files-root-app/__dot__vscode/extensions.json__tmpl__ +6 -0
- package/src/generators/new/files-root-app/package.json__tmpl__ +17 -0
- package/src/generators/new/generate-preset.d.ts +4 -0
- package/src/generators/new/generate-preset.js +162 -0
- package/src/generators/new/generate-workspace-files.d.ts +3 -0
- package/src/generators/new/generate-workspace-files.js +190 -0
- package/src/generators/new/new.d.ts +30 -0
- package/src/generators/new/new.js +84 -0
- package/src/generators/new/schema.json +92 -0
- package/src/generators/npm-package/files/index.js.template +1 -0
- package/src/generators/npm-package/npm-package.d.ts +9 -0
- package/src/generators/npm-package/npm-package.js +53 -0
- package/src/generators/npm-package/schema.json +31 -0
- package/src/generators/preset/preset.d.ts +4 -0
- package/src/generators/preset/preset.js +301 -0
- package/src/generators/preset/schema.d.ts +22 -0
- package/src/generators/preset/schema.json +109 -0
- package/src/generators/remove/lib/__fixtures__/jest-project.config.d.ts +14 -0
- package/src/generators/remove/lib/__fixtures__/jest-project.config.js +17 -0
- package/src/generators/remove/lib/__fixtures__/jest.config.d.ts +0 -0
- package/src/generators/remove/lib/__fixtures__/jest.config.js +8 -0
- package/src/generators/remove/lib/check-dependencies.d.ts +7 -0
- package/src/generators/remove/lib/check-dependencies.js +23 -0
- package/src/generators/remove/lib/check-project-is-safe-to-remove.d.ts +3 -0
- package/src/generators/remove/lib/check-project-is-safe-to-remove.js +25 -0
- package/src/generators/remove/lib/check-targets.d.ts +10 -0
- package/src/generators/remove/lib/check-targets.js +68 -0
- package/src/generators/remove/lib/remove-project-references-in-config.d.ts +3 -0
- package/src/generators/remove/lib/remove-project-references-in-config.js +21 -0
- package/src/generators/remove/lib/remove-project.d.ts +5 -0
- package/src/generators/remove/lib/remove-project.js +14 -0
- package/src/generators/remove/lib/update-jest-config.d.ts +6 -0
- package/src/generators/remove/lib/update-jest-config.js +75 -0
- package/src/generators/remove/lib/update-tsconfig.d.ts +8 -0
- package/src/generators/remove/lib/update-tsconfig.js +31 -0
- package/src/generators/remove/remove.d.ts +4 -0
- package/src/generators/remove/remove.js +26 -0
- package/src/generators/remove/schema.d.ts +10 -0
- package/src/generators/remove/schema.json +47 -0
- package/src/generators/run-commands/run-commands.d.ts +4 -0
- package/src/generators/run-commands/run-commands.js +25 -0
- package/src/generators/run-commands/schema.d.ts +8 -0
- package/src/generators/run-commands/schema.json +49 -0
- package/src/generators/utils/get-npm-package-version.d.ts +1 -0
- package/src/generators/utils/get-npm-package-version.js +21 -0
- package/src/generators/utils/insert-import.d.ts +2 -0
- package/src/generators/utils/insert-import.js +47 -0
- package/src/generators/utils/insert-statement.d.ts +5 -0
- package/src/generators/utils/insert-statement.js +33 -0
- package/src/generators/utils/jest-config.d.ts +2 -0
- package/src/generators/utils/jest-config.js +13 -0
- package/src/generators/utils/presets.d.ts +29 -0
- package/src/generators/utils/presets.js +34 -0
- package/src/migrations/update-15-7-0/split-configuration-into-project-json-files.d.ts +3 -0
- package/src/migrations/update-15-7-0/split-configuration-into-project-json-files.js +11 -0
- package/src/migrations/update-16-0-0/fix-invalid-babelrc.d.ts +2 -0
- package/src/migrations/update-16-0-0/fix-invalid-babelrc.js +41 -0
- package/src/migrations/update-16-0-0/move-workspace-generators-to-local-plugin.d.ts +2 -0
- package/src/migrations/update-16-0-0/move-workspace-generators-to-local-plugin.js +187 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
- package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +9 -0
- package/src/tasks-runner/cache.d.ts +1 -0
- package/src/tasks-runner/cache.js +5 -0
- package/src/tasks-runner/default-tasks-runner.d.ts +1 -0
- package/src/tasks-runner/default-tasks-runner.js +4 -0
- package/src/tasks-runner/life-cycle.d.ts +1 -0
- package/src/tasks-runner/life-cycle.js +5 -0
- package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.d.ts +1 -0
- package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.js +4 -0
- package/src/tasks-runner/tasks-runner.d.ts +2 -0
- package/src/tasks-runner/tasks-runner.js +4 -0
- package/src/tasks-runner/utils.d.ts +1 -0
- package/src/tasks-runner/utils.js +4 -0
- package/src/utilities/app-root.d.ts +1 -0
- package/src/utilities/app-root.js +4 -0
- package/src/utilities/default-base.d.ts +1 -0
- package/src/utilities/default-base.js +15 -0
- package/src/utilities/fileutils.d.ts +13 -0
- package/src/utilities/fileutils.js +51 -0
- package/src/utilities/get-import-path.d.ts +3 -0
- package/src/utilities/get-import-path.js +20 -0
- package/src/utilities/output.d.ts +1 -0
- package/src/utilities/output.js +4 -0
- package/src/utilities/ts-config.d.ts +7 -0
- package/src/utilities/ts-config.js +67 -0
- package/src/utilities/typescript/compilation.d.ts +22 -0
- package/src/utilities/typescript/compilation.js +120 -0
- package/src/utilities/typescript/get-source-nodes.d.ts +5 -0
- package/src/utilities/typescript/get-source-nodes.js +21 -0
- package/src/utilities/typescript.d.ts +13 -0
- package/src/utilities/typescript.js +55 -0
- package/src/utils/ast-utils.d.ts +1 -0
- package/src/utils/ast-utils.js +5 -0
- package/src/utils/cli-config-utils.d.ts +16 -0
- package/src/utils/cli-config-utils.js +29 -0
- package/src/utils/lint.d.ts +4 -0
- package/src/utils/lint.js +2 -0
- package/src/utils/output.d.ts +52 -0
- package/src/utils/output.js +133 -0
- package/src/utils/perf-logging.d.ts +1 -0
- package/src/utils/perf-logging.js +10 -0
- package/src/utils/project-type.d.ts +5 -0
- package/src/utils/project-type.js +17 -0
- package/src/utils/versions.d.ts +3 -0
- package/src/utils/versions.js +8 -0
- package/tasks-runners/default.d.ts +1 -0
- package/tasks-runners/default.js +5 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# <%= formattedNames.className %>
|
|
2
|
+
|
|
3
|
+
<a alt="Nx logo" href="https://nx.dev" target="_blank" rel="noreferrer"><img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-logo.png" width="45"></a>
|
|
4
|
+
|
|
5
|
+
✨ **This workspace has been generated by [Nx, Smart Monorepos · Fast CI.](https://nx.dev)** ✨
|
|
6
|
+
|
|
7
|
+
## Integrate with editors
|
|
8
|
+
|
|
9
|
+
Enhance your Nx experience by installing [Nx Console](https://nx.dev/nx-console) for your favorite editor. Nx Console
|
|
10
|
+
provides an interactive UI to view your projects, run tasks, generate code, and more! Available for VSCode, IntelliJ and
|
|
11
|
+
comes with a LSP for Vim users.
|
|
12
|
+
<% if (!!appName) {
|
|
13
|
+
if (isJsStandalone) { %>
|
|
14
|
+
## Build the library
|
|
15
|
+
|
|
16
|
+
Run `npx nx build` to build the library. The build artifacts are stored in the output directory (i.e. `dist/`), ready to be published.
|
|
17
|
+
<% } else { %>
|
|
18
|
+
## Start the application
|
|
19
|
+
|
|
20
|
+
Run `npx nx <%= serveCommand %> <%= appName %>` to start the development server. Happy coding!
|
|
21
|
+
|
|
22
|
+
## Build for production
|
|
23
|
+
|
|
24
|
+
Run `npx nx build <%= appName %>` to build the application. The build artifacts are stored in the output directory (e.g. `dist/` or `build/`), ready to be deployed.
|
|
25
|
+
<% } } else { %>
|
|
26
|
+
## Nx plugins and code generators
|
|
27
|
+
|
|
28
|
+
Add Nx plugins to leverage their code generators and automated, inferred tasks.
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
# Add plugin
|
|
32
|
+
npx nx add @nx/react
|
|
33
|
+
|
|
34
|
+
# Use code generator
|
|
35
|
+
npx nx generate @nx/react:app demo
|
|
36
|
+
|
|
37
|
+
# Run development server
|
|
38
|
+
npx nx serve demo
|
|
39
|
+
|
|
40
|
+
# View project details
|
|
41
|
+
npx nx show project demo --web
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Run `npx nx list` to get a list of available plugins and whether they have generators. Then run `npx nx list <plugin-name>` to see what generators are available.
|
|
45
|
+
|
|
46
|
+
Learn more about [code generators](https://nx.dev/features/generate-code) and [inferred tasks](https://nx.dev/concepts/inferred-tasks) in the docs.
|
|
47
|
+
<% } %>
|
|
48
|
+
## Running tasks
|
|
49
|
+
|
|
50
|
+
To execute tasks with Nx use the following syntax:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
npx nx <target> <project> <...options>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
You can also run multiple targets:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
npx nx run-many -t <target1> <target2>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
..or add `-p` to filter specific projects
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
npx nx run-many -t <target1> <target2> -p <proj1> <proj2>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Targets can be defined in the `package.json` or `projects.json`. Learn more [in the docs](https://nx.dev/features/run-tasks).
|
|
69
|
+
|
|
70
|
+
## Set up CI!
|
|
71
|
+
|
|
72
|
+
Nx comes with local caching already built-in (check your `nx.json`). On CI you might want to go a step further.
|
|
73
|
+
|
|
74
|
+
- [Set up remote caching](https://nx.dev/features/share-your-cache)
|
|
75
|
+
- [Set up task distribution across multiple machines](https://nx.dev/nx-cloud/features/distribute-task-execution)
|
|
76
|
+
- [Learn more how to setup CI](https://nx.dev/recipes/ci)
|
|
77
|
+
|
|
78
|
+
## Explore the project graph
|
|
79
|
+
|
|
80
|
+
Run `npx nx graph` to show the graph of the workspace.
|
|
81
|
+
It will show tasks that you can run with Nx.
|
|
82
|
+
|
|
83
|
+
- [Learn more about Exploring the Project Graph](https://nx.dev/core-features/explore-graph)
|
|
84
|
+
|
|
85
|
+
## Connect with us!
|
|
86
|
+
|
|
87
|
+
- [Join the community](https://nx.dev/community)
|
|
88
|
+
- [Subscribe to the Nx Youtube Channel](https://www.youtube.com/@nxdevtools)
|
|
89
|
+
- [Follow us on Twitter](https://twitter.com/nxdevtools)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
|
2
|
+
|
|
3
|
+
# compiled output
|
|
4
|
+
dist
|
|
5
|
+
tmp
|
|
6
|
+
/out-tsc
|
|
7
|
+
|
|
8
|
+
# dependencies
|
|
9
|
+
node_modules
|
|
10
|
+
|
|
11
|
+
# IDEs and editors
|
|
12
|
+
/.idea
|
|
13
|
+
.project
|
|
14
|
+
.classpath
|
|
15
|
+
.c9/
|
|
16
|
+
*.launch
|
|
17
|
+
.settings/
|
|
18
|
+
*.sublime-workspace
|
|
19
|
+
|
|
20
|
+
# IDE - VSCode
|
|
21
|
+
.vscode/*
|
|
22
|
+
!.vscode/settings.json
|
|
23
|
+
!.vscode/tasks.json
|
|
24
|
+
!.vscode/launch.json
|
|
25
|
+
!.vscode/extensions.json
|
|
26
|
+
|
|
27
|
+
# misc
|
|
28
|
+
/.sass-cache
|
|
29
|
+
/connect.lock
|
|
30
|
+
/coverage
|
|
31
|
+
/libpeerconnection.log
|
|
32
|
+
npm-debug.log
|
|
33
|
+
yarn-error.log
|
|
34
|
+
testem.log
|
|
35
|
+
/typings
|
|
36
|
+
|
|
37
|
+
# System Files
|
|
38
|
+
.DS_Store
|
|
39
|
+
Thumbs.db
|
|
40
|
+
|
|
41
|
+
.nx/cache
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@<%= formattedNames.fileName %>/source",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"scripts": {
|
|
6
|
+
},
|
|
7
|
+
"private": true,
|
|
8
|
+
"dependencies": {
|
|
9
|
+
},
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"@nx/workspace": "<%= nxVersion %>",
|
|
12
|
+
"nx": "<%= nxVersion %>"
|
|
13
|
+
},
|
|
14
|
+
"nx": {
|
|
15
|
+
"includedScripts": []
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Tree } from '@nx/devkit';
|
|
2
|
+
import { NormalizedSchema } from './new';
|
|
3
|
+
export declare function addPresetDependencies(host: Tree, options: NormalizedSchema): import("@nx/devkit").GeneratorCallback;
|
|
4
|
+
export declare function generatePreset(host: Tree, opts: NormalizedSchema): Promise<void>;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generatePreset = exports.addPresetDependencies = void 0;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const presets_1 = require("../utils/presets");
|
|
6
|
+
const versions_1 = require("../../utils/versions");
|
|
7
|
+
const get_npm_package_version_1 = require("../utils/get-npm-package-version");
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const yargsParser = require("yargs-parser");
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
function addPresetDependencies(host, options) {
|
|
12
|
+
const { dependencies, dev } = getPresetDependencies(options);
|
|
13
|
+
return (0, devkit_1.addDependenciesToPackageJson)(host, dependencies, dev, (0, path_1.join)(options.directory, 'package.json'));
|
|
14
|
+
}
|
|
15
|
+
exports.addPresetDependencies = addPresetDependencies;
|
|
16
|
+
function generatePreset(host, opts) {
|
|
17
|
+
const parsedArgs = yargsParser(process.argv, {
|
|
18
|
+
boolean: ['interactive'],
|
|
19
|
+
default: {
|
|
20
|
+
interactive: true,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
const spawnOptions = {
|
|
24
|
+
stdio: 'inherit',
|
|
25
|
+
shell: true,
|
|
26
|
+
cwd: (0, path_1.join)(host.root, opts.directory),
|
|
27
|
+
};
|
|
28
|
+
const pmc = (0, devkit_1.getPackageManagerCommand)();
|
|
29
|
+
const executable = `${pmc.exec} nx`;
|
|
30
|
+
const args = getPresetArgs(opts);
|
|
31
|
+
return new Promise((resolve, reject) => {
|
|
32
|
+
(0, child_process_1.spawn)(executable, args, spawnOptions).on('close', (code) => {
|
|
33
|
+
if (code === 0) {
|
|
34
|
+
resolve();
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const message = 'Workspace creation failed, see above.';
|
|
38
|
+
reject(new Error(message));
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
function getPresetArgs(options) {
|
|
43
|
+
// supported presets
|
|
44
|
+
return getDefaultArgs(options);
|
|
45
|
+
}
|
|
46
|
+
function getDefaultArgs(opts) {
|
|
47
|
+
return [
|
|
48
|
+
`g`,
|
|
49
|
+
`@nx/workspace:preset`,
|
|
50
|
+
`--name=${opts.appName}`,
|
|
51
|
+
opts.style ? `--style=${opts.style}` : null,
|
|
52
|
+
opts.linter ? `--linter=${opts.linter}` : null,
|
|
53
|
+
opts.preset ? `--preset=${opts.preset}` : null,
|
|
54
|
+
opts.bundler ? `--bundler=${opts.bundler}` : null,
|
|
55
|
+
opts.framework ? `--framework=${opts.framework}` : null,
|
|
56
|
+
opts.docker ? `--docker=${opts.docker}` : null,
|
|
57
|
+
opts.js ? `--js` : null,
|
|
58
|
+
opts.nextAppDir ? '--nextAppDir=true' : '--nextAppDir=false',
|
|
59
|
+
opts.nextSrcDir ? '--nextSrcDir=true' : '--nextSrcDir=false',
|
|
60
|
+
opts.packageManager ? `--packageManager=${opts.packageManager}` : null,
|
|
61
|
+
opts.standaloneApi !== undefined
|
|
62
|
+
? `--standaloneApi=${opts.standaloneApi}`
|
|
63
|
+
: null,
|
|
64
|
+
parsedArgs.interactive ? '--interactive=true' : '--interactive=false',
|
|
65
|
+
opts.routing !== undefined ? `--routing=${opts.routing}` : null,
|
|
66
|
+
opts.e2eTestRunner !== undefined
|
|
67
|
+
? `--e2eTestRunner=${opts.e2eTestRunner}`
|
|
68
|
+
: null,
|
|
69
|
+
opts.ssr ? `--ssr` : null,
|
|
70
|
+
opts.prefix !== undefined ? `--prefix=${opts.prefix}` : null,
|
|
71
|
+
].filter((e) => !!e);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.generatePreset = generatePreset;
|
|
75
|
+
function getPresetDependencies({ preset, presetVersion, bundler, e2eTestRunner, }) {
|
|
76
|
+
switch (preset) {
|
|
77
|
+
case presets_1.Preset.Apps:
|
|
78
|
+
case presets_1.Preset.NPM:
|
|
79
|
+
case presets_1.Preset.TS:
|
|
80
|
+
case presets_1.Preset.TsStandalone:
|
|
81
|
+
return { dependencies: {}, dev: { '@nx/js': versions_1.nxVersion } };
|
|
82
|
+
case presets_1.Preset.AngularMonorepo:
|
|
83
|
+
case presets_1.Preset.AngularStandalone:
|
|
84
|
+
return {
|
|
85
|
+
dependencies: { '@nx/angular': versions_1.nxVersion },
|
|
86
|
+
dev: {
|
|
87
|
+
'@angular-devkit/core': versions_1.angularCliVersion,
|
|
88
|
+
typescript: versions_1.typescriptVersion,
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
case presets_1.Preset.Express:
|
|
92
|
+
return { dependencies: {}, dev: { '@nx/express': versions_1.nxVersion } };
|
|
93
|
+
case presets_1.Preset.Nest:
|
|
94
|
+
return {
|
|
95
|
+
dependencies: {},
|
|
96
|
+
dev: { '@nx/nest': versions_1.nxVersion, typescript: versions_1.typescriptVersion },
|
|
97
|
+
};
|
|
98
|
+
case presets_1.Preset.NextJs:
|
|
99
|
+
case presets_1.Preset.NextJsStandalone:
|
|
100
|
+
return { dependencies: { '@nx/next': versions_1.nxVersion }, dev: {} };
|
|
101
|
+
case presets_1.Preset.VueMonorepo:
|
|
102
|
+
case presets_1.Preset.VueStandalone:
|
|
103
|
+
return {
|
|
104
|
+
dependencies: {},
|
|
105
|
+
dev: {
|
|
106
|
+
'@nx/vue': versions_1.nxVersion,
|
|
107
|
+
'@nx/cypress': e2eTestRunner === 'cypress' ? versions_1.nxVersion : undefined,
|
|
108
|
+
'@nx/playwright': e2eTestRunner === 'playwright' ? versions_1.nxVersion : undefined,
|
|
109
|
+
'@nx/vite': versions_1.nxVersion,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
case presets_1.Preset.Nuxt:
|
|
113
|
+
case presets_1.Preset.NuxtStandalone:
|
|
114
|
+
return {
|
|
115
|
+
dependencies: {},
|
|
116
|
+
dev: {
|
|
117
|
+
'@nx/nuxt': versions_1.nxVersion,
|
|
118
|
+
'@nx/cypress': e2eTestRunner === 'cypress' ? versions_1.nxVersion : undefined,
|
|
119
|
+
'@nx/playwright': e2eTestRunner === 'playwright' ? versions_1.nxVersion : undefined,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
case presets_1.Preset.ReactMonorepo:
|
|
123
|
+
case presets_1.Preset.ReactStandalone:
|
|
124
|
+
return {
|
|
125
|
+
dependencies: {},
|
|
126
|
+
dev: {
|
|
127
|
+
'@nx/react': versions_1.nxVersion,
|
|
128
|
+
'@nx/cypress': e2eTestRunner !== 'none' ? versions_1.nxVersion : undefined,
|
|
129
|
+
'@nx/jest': bundler !== 'vite' ? versions_1.nxVersion : undefined,
|
|
130
|
+
'@nx/vite': bundler === 'vite' ? versions_1.nxVersion : undefined,
|
|
131
|
+
'@nx/webpack': bundler === 'webpack' ? versions_1.nxVersion : undefined,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
case presets_1.Preset.ReactNative:
|
|
135
|
+
return { dependencies: {}, dev: { '@nx/react-native': versions_1.nxVersion } };
|
|
136
|
+
case presets_1.Preset.Expo:
|
|
137
|
+
return { dependencies: {}, dev: { '@nx/expo': versions_1.nxVersion } };
|
|
138
|
+
case presets_1.Preset.WebComponents:
|
|
139
|
+
return {
|
|
140
|
+
dependencies: {},
|
|
141
|
+
dev: { '@nx/web': versions_1.nxVersion, typescript: versions_1.typescriptVersion },
|
|
142
|
+
};
|
|
143
|
+
case presets_1.Preset.NodeStandalone:
|
|
144
|
+
case presets_1.Preset.NodeMonorepo:
|
|
145
|
+
return {
|
|
146
|
+
dependencies: {},
|
|
147
|
+
dev: {
|
|
148
|
+
'@nx/node': versions_1.nxVersion,
|
|
149
|
+
'@nx/webpack': bundler === 'webpack' ? versions_1.nxVersion : undefined,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
default: {
|
|
153
|
+
return {
|
|
154
|
+
dev: {},
|
|
155
|
+
dependencies: {
|
|
156
|
+
[preset]: process.env['NX_E2E_PRESET_VERSION'] ??
|
|
157
|
+
(0, get_npm_package_version_1.getNpmPackageVersion)(preset, presetVersion),
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateWorkspaceFiles = void 0;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const versions_1 = require("../../utils/versions");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const presets_1 = require("../utils/presets");
|
|
8
|
+
const default_base_1 = require("../../utilities/default-base");
|
|
9
|
+
async function generateWorkspaceFiles(tree, options) {
|
|
10
|
+
if (!options.name) {
|
|
11
|
+
throw new Error(`Invalid options, "name" is required.`);
|
|
12
|
+
}
|
|
13
|
+
// we need to check package manager version before the package.json is generated
|
|
14
|
+
// since it might influence the version report
|
|
15
|
+
const packageManagerVersion = (0, devkit_1.getPackageManagerVersion)(options.packageManager, tree.root);
|
|
16
|
+
options = normalizeOptions(options);
|
|
17
|
+
createReadme(tree, options);
|
|
18
|
+
createFiles(tree, options);
|
|
19
|
+
createNxJson(tree, options);
|
|
20
|
+
const [packageMajor] = packageManagerVersion.split('.');
|
|
21
|
+
if (options.packageManager === 'pnpm' && +packageMajor >= 7) {
|
|
22
|
+
createNpmrc(tree, options);
|
|
23
|
+
}
|
|
24
|
+
else if (options.packageManager === 'yarn') {
|
|
25
|
+
if (+packageMajor >= 2) {
|
|
26
|
+
createYarnrcYml(tree, options);
|
|
27
|
+
// avoids errors when using nested yarn projects
|
|
28
|
+
tree.write((0, path_1.join)(options.directory, 'yarn.lock'), '');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
setPresetProperty(tree, options);
|
|
32
|
+
addNpmScripts(tree, options);
|
|
33
|
+
setUpWorkspacesInPackageJson(tree, options);
|
|
34
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
35
|
+
}
|
|
36
|
+
exports.generateWorkspaceFiles = generateWorkspaceFiles;
|
|
37
|
+
function setPresetProperty(tree, options) {
|
|
38
|
+
(0, devkit_1.updateJson)(tree, (0, path_1.join)(options.directory, 'nx.json'), (json) => {
|
|
39
|
+
if (options.preset === presets_1.Preset.NPM) {
|
|
40
|
+
addPropertyWithStableKeys(json, 'extends', 'nx/presets/npm.json');
|
|
41
|
+
}
|
|
42
|
+
return json;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function createNxJson(tree, { directory, defaultBase, preset }) {
|
|
46
|
+
const nxJson = {
|
|
47
|
+
$schema: './node_modules/nx/schemas/nx-schema.json',
|
|
48
|
+
defaultBase,
|
|
49
|
+
targetDefaults: process.env.NX_ADD_PLUGINS === 'false'
|
|
50
|
+
? {
|
|
51
|
+
build: {
|
|
52
|
+
cache: true,
|
|
53
|
+
dependsOn: ['^build'],
|
|
54
|
+
},
|
|
55
|
+
lint: {
|
|
56
|
+
cache: true,
|
|
57
|
+
},
|
|
58
|
+
}
|
|
59
|
+
: undefined,
|
|
60
|
+
};
|
|
61
|
+
if (defaultBase === 'main') {
|
|
62
|
+
delete nxJson.defaultBase;
|
|
63
|
+
}
|
|
64
|
+
if (preset !== presets_1.Preset.NPM) {
|
|
65
|
+
nxJson.namedInputs = {
|
|
66
|
+
default: ['{projectRoot}/**/*', 'sharedGlobals'],
|
|
67
|
+
production: ['default'],
|
|
68
|
+
sharedGlobals: [],
|
|
69
|
+
};
|
|
70
|
+
if (process.env.NX_ADD_PLUGINS === 'false') {
|
|
71
|
+
nxJson.targetDefaults.build.inputs = ['production', '^production'];
|
|
72
|
+
nxJson.useInferencePlugins = false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
(0, devkit_1.writeJson)(tree, (0, path_1.join)(directory, 'nx.json'), nxJson);
|
|
76
|
+
}
|
|
77
|
+
function createFiles(tree, options) {
|
|
78
|
+
const formattedNames = (0, devkit_1.names)(options.name);
|
|
79
|
+
const filesDirName = options.preset === presets_1.Preset.AngularStandalone ||
|
|
80
|
+
options.preset === presets_1.Preset.ReactStandalone ||
|
|
81
|
+
options.preset === presets_1.Preset.VueStandalone ||
|
|
82
|
+
options.preset === presets_1.Preset.NuxtStandalone ||
|
|
83
|
+
options.preset === presets_1.Preset.NodeStandalone ||
|
|
84
|
+
options.preset === presets_1.Preset.NextJsStandalone ||
|
|
85
|
+
options.preset === presets_1.Preset.TsStandalone
|
|
86
|
+
? './files-root-app'
|
|
87
|
+
: options.preset === presets_1.Preset.NPM
|
|
88
|
+
? './files-package-based-repo'
|
|
89
|
+
: './files-integrated-repo';
|
|
90
|
+
(0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, filesDirName), options.directory, {
|
|
91
|
+
formattedNames,
|
|
92
|
+
dot: '.',
|
|
93
|
+
tmpl: '',
|
|
94
|
+
cliCommand: 'nx',
|
|
95
|
+
nxCli: false,
|
|
96
|
+
...options,
|
|
97
|
+
nxVersion: versions_1.nxVersion,
|
|
98
|
+
packageManager: options.packageManager,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function createReadme(tree, { name, appName, directory, preset }) {
|
|
102
|
+
const formattedNames = (0, devkit_1.names)(name);
|
|
103
|
+
(0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, './files-readme'), directory, {
|
|
104
|
+
formattedNames,
|
|
105
|
+
isJsStandalone: preset === presets_1.Preset.TsStandalone,
|
|
106
|
+
appName,
|
|
107
|
+
serveCommand: preset === presets_1.Preset.NextJs || preset === presets_1.Preset.NextJsStandalone
|
|
108
|
+
? 'dev'
|
|
109
|
+
: 'serve',
|
|
110
|
+
name,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// ensure that pnpm install add all the missing peer deps
|
|
114
|
+
function createNpmrc(tree, options) {
|
|
115
|
+
tree.write((0, path_1.join)(options.directory, '.npmrc'), 'strict-peer-dependencies=false\nauto-install-peers=true\n');
|
|
116
|
+
}
|
|
117
|
+
// ensure that yarn (berry) install uses classic node linker
|
|
118
|
+
function createYarnrcYml(tree, options) {
|
|
119
|
+
tree.write((0, path_1.join)(options.directory, '.yarnrc.yml'), 'nodeLinker: node-modules\n');
|
|
120
|
+
}
|
|
121
|
+
function addNpmScripts(tree, options) {
|
|
122
|
+
if (options.preset === presets_1.Preset.AngularStandalone ||
|
|
123
|
+
options.preset === presets_1.Preset.ReactStandalone ||
|
|
124
|
+
options.preset === presets_1.Preset.VueStandalone ||
|
|
125
|
+
options.preset === presets_1.Preset.NuxtStandalone ||
|
|
126
|
+
options.preset === presets_1.Preset.NodeStandalone) {
|
|
127
|
+
(0, devkit_1.updateJson)(tree, (0, path_1.join)(options.directory, 'package.json'), (json) => {
|
|
128
|
+
Object.assign(json.scripts, {
|
|
129
|
+
start: 'nx serve',
|
|
130
|
+
build: 'nx build',
|
|
131
|
+
test: 'nx test',
|
|
132
|
+
});
|
|
133
|
+
return json;
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
if (options.preset === presets_1.Preset.NextJsStandalone) {
|
|
137
|
+
(0, devkit_1.updateJson)(tree, (0, path_1.join)(options.directory, 'package.json'), (json) => {
|
|
138
|
+
Object.assign(json.scripts, {
|
|
139
|
+
dev: 'nx dev',
|
|
140
|
+
build: 'nx build',
|
|
141
|
+
start: 'nx start',
|
|
142
|
+
test: 'nx test',
|
|
143
|
+
});
|
|
144
|
+
return json;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (options.preset === presets_1.Preset.TsStandalone) {
|
|
148
|
+
(0, devkit_1.updateJson)(tree, (0, path_1.join)(options.directory, 'package.json'), (json) => {
|
|
149
|
+
Object.assign(json.scripts, {
|
|
150
|
+
build: 'nx build',
|
|
151
|
+
test: 'nx test',
|
|
152
|
+
});
|
|
153
|
+
return json;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function addPropertyWithStableKeys(obj, key, value) {
|
|
158
|
+
const copy = { ...obj };
|
|
159
|
+
Object.keys(obj).forEach((k) => {
|
|
160
|
+
delete obj[k];
|
|
161
|
+
});
|
|
162
|
+
obj[key] = value;
|
|
163
|
+
Object.keys(copy).forEach((k) => {
|
|
164
|
+
obj[k] = copy[k];
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
function normalizeOptions(options) {
|
|
168
|
+
let defaultBase = options.defaultBase || (0, default_base_1.deduceDefaultBase)();
|
|
169
|
+
const name = (0, devkit_1.names)(options.name).fileName;
|
|
170
|
+
return {
|
|
171
|
+
name,
|
|
172
|
+
...options,
|
|
173
|
+
defaultBase,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function setUpWorkspacesInPackageJson(tree, options) {
|
|
177
|
+
if (options.preset === presets_1.Preset.NPM) {
|
|
178
|
+
if (options.packageManager === 'pnpm') {
|
|
179
|
+
tree.write((0, path_1.join)(options.directory, 'pnpm-workspace.yaml'), `packages:
|
|
180
|
+
- 'packages/*'
|
|
181
|
+
`);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
(0, devkit_1.updateJson)(tree, (0, path_1.join)(options.directory, 'package.json'), (json) => {
|
|
185
|
+
json.workspaces = ['packages/*'];
|
|
186
|
+
return json;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { PackageManager, Tree } from '@nx/devkit';
|
|
2
|
+
import { Linter } from '../../utils/lint';
|
|
3
|
+
interface Schema {
|
|
4
|
+
directory: string;
|
|
5
|
+
name: string;
|
|
6
|
+
appName?: string;
|
|
7
|
+
skipInstall?: boolean;
|
|
8
|
+
style?: string;
|
|
9
|
+
preset: string;
|
|
10
|
+
defaultBase: string;
|
|
11
|
+
framework?: string;
|
|
12
|
+
docker?: boolean;
|
|
13
|
+
js?: boolean;
|
|
14
|
+
nextAppDir?: boolean;
|
|
15
|
+
nextSrcDir?: boolean;
|
|
16
|
+
linter?: Linter;
|
|
17
|
+
bundler?: 'vite' | 'webpack';
|
|
18
|
+
standaloneApi?: boolean;
|
|
19
|
+
routing?: boolean;
|
|
20
|
+
packageManager?: PackageManager;
|
|
21
|
+
e2eTestRunner?: 'cypress' | 'playwright' | 'detox' | 'jest' | 'none';
|
|
22
|
+
ssr?: boolean;
|
|
23
|
+
prefix?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface NormalizedSchema extends Schema {
|
|
26
|
+
presetVersion?: string;
|
|
27
|
+
isCustomPreset: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare function newGenerator(tree: Tree, opts: Schema): Promise<() => Promise<void>>;
|
|
30
|
+
export default newGenerator;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.newGenerator = void 0;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const presets_1 = require("../utils/presets");
|
|
7
|
+
const generate_workspace_files_1 = require("./generate-workspace-files");
|
|
8
|
+
const generate_preset_1 = require("./generate-preset");
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
async function newGenerator(tree, opts) {
|
|
11
|
+
const options = normalizeOptions(opts);
|
|
12
|
+
validateOptions(options, tree);
|
|
13
|
+
await (0, generate_workspace_files_1.generateWorkspaceFiles)(tree, { ...options, nxCloud: undefined });
|
|
14
|
+
(0, generate_preset_1.addPresetDependencies)(tree, options);
|
|
15
|
+
return async () => {
|
|
16
|
+
if (!options.skipInstall) {
|
|
17
|
+
const pmc = (0, devkit_1.getPackageManagerCommand)(options.packageManager);
|
|
18
|
+
if (pmc.preInstall) {
|
|
19
|
+
(0, child_process_1.execSync)(pmc.preInstall, {
|
|
20
|
+
cwd: (0, devkit_1.joinPathFragments)(tree.root, options.directory),
|
|
21
|
+
stdio: process.env.NX_GENERATE_QUIET === 'true' ? 'ignore' : 'inherit',
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
(0, devkit_1.installPackagesTask)(tree, false, options.directory, options.packageManager);
|
|
25
|
+
}
|
|
26
|
+
// TODO: move all of these into create-nx-workspace
|
|
27
|
+
if (options.preset !== presets_1.Preset.NPM && !options.isCustomPreset) {
|
|
28
|
+
await (0, generate_preset_1.generatePreset)(tree, options);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
exports.newGenerator = newGenerator;
|
|
33
|
+
exports.default = newGenerator;
|
|
34
|
+
function validateOptions(options, host) {
|
|
35
|
+
if (options.skipInstall &&
|
|
36
|
+
options.preset !== presets_1.Preset.Apps &&
|
|
37
|
+
options.preset !== presets_1.Preset.TS &&
|
|
38
|
+
options.preset !== presets_1.Preset.NPM) {
|
|
39
|
+
throw new Error(`Cannot select a preset when skipInstall is set to true.`);
|
|
40
|
+
}
|
|
41
|
+
if ((options.preset === presets_1.Preset.NodeStandalone ||
|
|
42
|
+
options.preset === presets_1.Preset.NodeMonorepo) &&
|
|
43
|
+
!options.framework) {
|
|
44
|
+
throw new Error(`Cannot generate ${options.preset} without selecting a framework`);
|
|
45
|
+
}
|
|
46
|
+
if (host.exists(options.name) &&
|
|
47
|
+
!host.isFile(options.name) &&
|
|
48
|
+
host.children(options.name).length > 0) {
|
|
49
|
+
throw new Error(`${(0, path_1.join)(host.root, options.name)} is not an empty directory.`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function parsePresetName(input) {
|
|
53
|
+
// If the preset already contains a version in the name
|
|
54
|
+
// -- my-package@2.0.1
|
|
55
|
+
// -- @scope/package@version
|
|
56
|
+
const atIndex = input.indexOf('@', 1); // Skip the beginning @ because it denotes a scoped package.
|
|
57
|
+
if (atIndex > 0) {
|
|
58
|
+
return {
|
|
59
|
+
package: input.slice(0, atIndex),
|
|
60
|
+
version: input.slice(atIndex + 1),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
if (!input) {
|
|
65
|
+
throw new Error(`Invalid package name: ${input}`);
|
|
66
|
+
}
|
|
67
|
+
return { package: input };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function normalizeOptions(options) {
|
|
71
|
+
const normalized = {
|
|
72
|
+
...options,
|
|
73
|
+
};
|
|
74
|
+
normalized.name = (0, devkit_1.names)(options.name).fileName;
|
|
75
|
+
if (!options.directory) {
|
|
76
|
+
normalized.directory = normalized.name;
|
|
77
|
+
}
|
|
78
|
+
const parsed = parsePresetName(options.preset);
|
|
79
|
+
normalized.preset = parsed.package;
|
|
80
|
+
// explicitly specified "presetVersion" takes priority over the one from the package name
|
|
81
|
+
normalized.presetVersion ??= parsed.version;
|
|
82
|
+
normalized.isCustomPreset = !Object.values(presets_1.Preset).includes(options.preset);
|
|
83
|
+
return normalized;
|
|
84
|
+
}
|