@nx/angular 20.0.0-beta.5 → 20.0.0-beta.6
Sign up to get free protection for your applications and to get access to all the features.
- package/migrations.json +0 -981
- package/package.json +8 -8
- package/src/builders/utilities/webpack.js +3 -3
- package/src/generators/application/application.js +3 -1
- package/src/generators/application/lib/normalize-options.js +3 -4
- package/src/generators/application/schema.d.ts +2 -4
- package/src/generators/application/schema.json +7 -12
- package/src/generators/component/lib/normalize-options.js +1 -2
- package/src/generators/component/schema.d.ts +2 -5
- package/src/generators/component/schema.json +7 -13
- package/src/generators/directive/lib/normalize-options.js +1 -2
- package/src/generators/directive/schema.d.ts +2 -3
- package/src/generators/directive/schema.json +8 -14
- package/src/generators/federate-module/lib/add-remote.js +0 -2
- package/src/generators/federate-module/schema.d.ts +0 -2
- package/src/generators/federate-module/schema.json +0 -5
- package/src/generators/host/host.js +6 -5
- package/src/generators/host/schema.d.ts +2 -4
- package/src/generators/host/schema.json +10 -13
- package/src/generators/init/init.js +3 -1
- package/src/generators/library/lib/add-standalone-component.js +3 -2
- package/src/generators/library/lib/normalize-options.js +1 -1
- package/src/generators/library/lib/normalized-schema.d.ts +2 -2
- package/src/generators/library/library.js +2 -0
- package/src/generators/library/schema.d.ts +2 -4
- package/src/generators/library/schema.json +7 -13
- package/src/generators/move/schema.d.ts +0 -3
- package/src/generators/move/schema.json +0 -5
- package/src/generators/pipe/lib/normalize-options.js +1 -2
- package/src/generators/pipe/schema.d.ts +2 -3
- package/src/generators/pipe/schema.json +7 -22
- package/src/generators/remote/remote.js +6 -5
- package/src/generators/remote/schema.d.ts +2 -4
- package/src/generators/remote/schema.json +10 -13
- package/src/generators/scam/lib/normalize-options.js +1 -2
- package/src/generators/scam/scam.js +0 -2
- package/src/generators/scam/schema.d.ts +3 -3
- package/src/generators/scam/schema.json +8 -23
- package/src/generators/scam-directive/lib/normalize-options.js +1 -2
- package/src/generators/scam-directive/scam-directive.js +0 -2
- package/src/generators/scam-directive/schema.d.ts +3 -3
- package/src/generators/scam-directive/schema.json +8 -3
- package/src/generators/scam-pipe/lib/normalize-options.js +1 -2
- package/src/generators/scam-pipe/scam-pipe.js +0 -2
- package/src/generators/scam-pipe/schema.d.ts +3 -3
- package/src/generators/scam-pipe/schema.json +8 -23
- package/src/generators/utils/testing.js +14 -17
- package/src/utils/mf/with-module-federation-ssr.js +1 -1
- package/src/utils/mf/with-module-federation.js +1 -1
- package/src/utils/versions.d.ts +1 -1
- package/src/utils/versions.js +1 -1
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nx/angular",
|
3
|
-
"version": "20.0.0-beta.
|
3
|
+
"version": "20.0.0-beta.6",
|
4
4
|
"private": false,
|
5
5
|
"description": "The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: \n\n- Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, Playwright and Cypress. \n\n- Generators to help scaffold code quickly (like: Micro Frontends, Libraries, both internal to your codebase and publishable to npm) \n\n- Single Component Application Modules (SCAMs) \n\n- NgRx helpers. \n\n- Utilities for automatic workspace refactoring.",
|
6
6
|
"repository": {
|
@@ -79,13 +79,13 @@
|
|
79
79
|
"tslib": "^2.3.0",
|
80
80
|
"webpack-merge": "^5.8.0",
|
81
81
|
"webpack": "^5.88.0",
|
82
|
-
"@module-federation/enhanced": "
|
83
|
-
"@nx/devkit": "20.0.0-beta.
|
84
|
-
"@nx/js": "20.0.0-beta.
|
85
|
-
"@nx/eslint": "20.0.0-beta.
|
86
|
-
"@nx/webpack": "20.0.0-beta.
|
87
|
-
"@nx/web": "20.0.0-beta.
|
88
|
-
"@nx/workspace": "20.0.0-beta.
|
82
|
+
"@module-federation/enhanced": "0.6.6",
|
83
|
+
"@nx/devkit": "20.0.0-beta.6",
|
84
|
+
"@nx/js": "20.0.0-beta.6",
|
85
|
+
"@nx/eslint": "20.0.0-beta.6",
|
86
|
+
"@nx/webpack": "20.0.0-beta.6",
|
87
|
+
"@nx/web": "20.0.0-beta.6",
|
88
|
+
"@nx/workspace": "20.0.0-beta.6",
|
89
89
|
"piscina": "^4.4.0"
|
90
90
|
},
|
91
91
|
"peerDependencies": {
|
@@ -16,11 +16,11 @@ async function mergeCustomWebpackConfig(baseWebpackConfig, pathToWebpackConfig,
|
|
16
16
|
// `module.exports = new Promise(...)`. If it exports a single object, but not a Promise,
|
17
17
|
// then await will just resolve that object.
|
18
18
|
const config = await customWebpackConfiguration;
|
19
|
-
// The extra Webpack configuration file can export a synchronous or asynchronous function,
|
20
|
-
// for instance: `module.exports = async config => { ... }`.
|
21
19
|
let newConfig;
|
22
20
|
if (typeof config === 'function') {
|
23
|
-
|
21
|
+
// The extra Webpack configuration file can export a synchronous or asynchronous function,
|
22
|
+
// for instance: `module.exports = async config => { ... }`.
|
23
|
+
newConfig = await config(baseWebpackConfig, options, target);
|
24
24
|
}
|
25
25
|
else {
|
26
26
|
newConfig = (0, webpack_merge_1.merge)(baseWebpackConfig, config);
|
@@ -2,14 +2,16 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.applicationGenerator = applicationGenerator;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const log_show_project_command_1 = require("@nx/devkit/src/utils/log-show-project-command");
|
5
6
|
const js_1 = require("@nx/js");
|
7
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
6
8
|
const init_1 = require("../init/init");
|
7
9
|
const setup_ssr_1 = require("../setup-ssr/setup-ssr");
|
8
10
|
const setup_tailwind_1 = require("../setup-tailwind/setup-tailwind");
|
9
11
|
const ensure_angular_dependencies_1 = require("../utils/ensure-angular-dependencies");
|
10
12
|
const lib_1 = require("./lib");
|
11
|
-
const log_show_project_command_1 = require("@nx/devkit/src/utils/log-show-project-command");
|
12
13
|
async function applicationGenerator(tree, schema) {
|
14
|
+
(0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(tree, 'angular', 'application');
|
13
15
|
const options = await (0, lib_1.normalizeOptions)(tree, schema);
|
14
16
|
const rootOffset = (0, devkit_1.offsetFromRoot)(options.appProjectRoot);
|
15
17
|
await (0, js_1.initGenerator)(tree, {
|
@@ -7,16 +7,14 @@ const eslint_1 = require("@nx/eslint");
|
|
7
7
|
const test_runners_1 = require("../../../utils/test-runners");
|
8
8
|
const version_utils_1 = require("../../utils/version-utils");
|
9
9
|
async function normalizeOptions(host, options) {
|
10
|
-
|
10
|
+
await (0, project_name_and_root_utils_1.ensureProjectName)(host, options, 'application');
|
11
|
+
const { projectName: appProjectName, projectRoot: appProjectRoot } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
|
11
12
|
name: options.name,
|
12
13
|
projectType: 'application',
|
13
14
|
directory: options.directory,
|
14
|
-
projectNameAndRootFormat: options.projectNameAndRootFormat,
|
15
15
|
rootProject: options.rootProject,
|
16
16
|
});
|
17
17
|
options.rootProject = appProjectRoot === '.';
|
18
|
-
options.projectNameAndRootFormat = projectNameAndRootFormat;
|
19
|
-
const nxJson = (0, devkit_1.readNxJson)(host);
|
20
18
|
const e2eProjectName = options.rootProject ? 'e2e' : `${appProjectName}-e2e`;
|
21
19
|
const e2eProjectRoot = options.rootProject ? 'e2e' : `${appProjectRoot}-e2e`;
|
22
20
|
const parsedTags = options.tags
|
@@ -40,6 +38,7 @@ async function normalizeOptions(host, options) {
|
|
40
38
|
linter: eslint_1.Linter.EsLint,
|
41
39
|
strict: true,
|
42
40
|
standalone: true,
|
41
|
+
directory: appProjectRoot,
|
43
42
|
...options,
|
44
43
|
prefix: options.prefix || 'app',
|
45
44
|
name: appProjectName,
|
@@ -1,10 +1,10 @@
|
|
1
|
-
import type { ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils';
|
2
1
|
import type { Linter, LinterType } from '@nx/eslint';
|
3
2
|
import type { E2eTestRunner, UnitTestRunner } from '../../utils/test-runners';
|
4
3
|
import type { Styles } from '../utils/types';
|
5
4
|
|
6
5
|
export interface Schema {
|
7
|
-
|
6
|
+
directory: string;
|
7
|
+
name?: string;
|
8
8
|
addTailwind?: boolean;
|
9
9
|
skipFormat?: boolean;
|
10
10
|
inlineStyle?: boolean;
|
@@ -14,8 +14,6 @@ export interface Schema {
|
|
14
14
|
prefix?: string;
|
15
15
|
style?: Styles;
|
16
16
|
skipTests?: boolean;
|
17
|
-
directory?: string;
|
18
|
-
projectNameAndRootFormat?: ProjectNameAndRootFormat;
|
19
17
|
tags?: string;
|
20
18
|
linter?: Linter | LinterType;
|
21
19
|
unitTestRunner?: UnitTestRunner;
|
@@ -6,26 +6,21 @@
|
|
6
6
|
"type": "object",
|
7
7
|
"cli": "nx",
|
8
8
|
"properties": {
|
9
|
-
"
|
10
|
-
"description": "The
|
9
|
+
"directory": {
|
10
|
+
"description": "The directory of the new application.",
|
11
11
|
"type": "string",
|
12
12
|
"$default": {
|
13
13
|
"$source": "argv",
|
14
14
|
"index": 0
|
15
15
|
},
|
16
|
-
"x-prompt": "
|
17
|
-
"pattern": "^[a-zA-Z][^:]*$"
|
16
|
+
"x-prompt": "Which directory do you want to create the application in?"
|
18
17
|
},
|
19
|
-
"
|
20
|
-
"description": "The
|
18
|
+
"name": {
|
19
|
+
"description": "The name of the application.",
|
21
20
|
"type": "string",
|
21
|
+
"pattern": "^[a-zA-Z][^:]*$",
|
22
22
|
"x-priority": "important"
|
23
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
24
|
"style": {
|
30
25
|
"description": "The file extension to be used for style files.",
|
31
26
|
"type": "string",
|
@@ -187,6 +182,6 @@
|
|
187
182
|
}
|
188
183
|
},
|
189
184
|
"additionalProperties": false,
|
190
|
-
"required": ["
|
185
|
+
"required": ["directory"],
|
191
186
|
"examplesFile": "../../../docs/application-examples.md"
|
192
187
|
}
|
@@ -8,8 +8,7 @@ async function normalizeOptions(tree, options) {
|
|
8
8
|
options.type ??= 'component';
|
9
9
|
const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
|
10
10
|
name: options.name,
|
11
|
-
|
12
|
-
nameAndDirectoryFormat: options.nameAndDirectoryFormat,
|
11
|
+
path: options.path,
|
13
12
|
suffix: options.type ?? 'component',
|
14
13
|
});
|
15
14
|
const { className } = (0, devkit_1.names)(name);
|
@@ -1,9 +1,6 @@
|
|
1
|
-
import type { NameAndDirectoryFormat } from '@nx/devkit/src/generators/artifact-name-and-directory-utils';
|
2
|
-
|
3
1
|
export interface Schema {
|
4
|
-
|
5
|
-
|
6
|
-
nameAndDirectoryFormat?: NameAndDirectoryFormat;
|
2
|
+
path: string;
|
3
|
+
name?: string;
|
7
4
|
displayBlock?: boolean;
|
8
5
|
inlineStyle?: boolean;
|
9
6
|
inlineTemplate?: boolean;
|
@@ -7,25 +7,19 @@
|
|
7
7
|
"description": "Creates a new Angular component.",
|
8
8
|
"additionalProperties": false,
|
9
9
|
"properties": {
|
10
|
-
"
|
10
|
+
"path": {
|
11
11
|
"type": "string",
|
12
|
-
"description": "The
|
12
|
+
"description": "The path at which to create the component file, relative to the workspace root. By default, it is set to the root of the project.",
|
13
13
|
"$default": {
|
14
14
|
"$source": "argv",
|
15
15
|
"index": 0
|
16
16
|
},
|
17
|
-
"x-prompt": "
|
17
|
+
"x-prompt": "Where to create the component?"
|
18
18
|
},
|
19
|
-
"
|
20
|
-
"type": "string",
|
21
|
-
"description": "The directory at which to create the component file. When `--nameAndDirectoryFormat=as-provided`, it will be relative to the current working directory. Otherwise, it will be relative to the workspace root.",
|
22
|
-
"aliases": ["dir", "path"],
|
23
|
-
"x-priority": "important"
|
24
|
-
},
|
25
|
-
"nameAndDirectoryFormat": {
|
26
|
-
"description": "Whether to generate the component in the directory as provided, relative to the current working directory and ignoring the project (`as-provided`) or generate it using the project and directory relative to the workspace root (`derived`).",
|
19
|
+
"name": {
|
27
20
|
"type": "string",
|
28
|
-
"
|
21
|
+
"description": "The name of the component.",
|
22
|
+
"x-prompt": "What name would you like to use for the component?"
|
29
23
|
},
|
30
24
|
"prefix": {
|
31
25
|
"type": "string",
|
@@ -118,6 +112,6 @@
|
|
118
112
|
"x-priority": "internal"
|
119
113
|
}
|
120
114
|
},
|
121
|
-
"required": ["
|
115
|
+
"required": ["path"],
|
122
116
|
"examplesFile": "../../../docs/component-examples.md"
|
123
117
|
}
|
@@ -7,8 +7,7 @@ const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/a
|
|
7
7
|
async function normalizeOptions(tree, options) {
|
8
8
|
const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
|
9
9
|
name: options.name,
|
10
|
-
|
11
|
-
nameAndDirectoryFormat: options.nameAndDirectoryFormat,
|
10
|
+
path: options.path,
|
12
11
|
suffix: 'directive',
|
13
12
|
});
|
14
13
|
const { className } = (0, devkit_1.names)(name);
|
@@ -1,9 +1,8 @@
|
|
1
1
|
import { NameAndDirectoryFormat } from '@nx/devkit/src/generators/artifact-name-and-directory-utils';
|
2
2
|
|
3
3
|
export interface Schema {
|
4
|
-
|
5
|
-
|
6
|
-
nameAndDirectoryFormat?: NameAndDirectoryFormat;
|
4
|
+
path: string;
|
5
|
+
name?: string;
|
7
6
|
prefix?: string;
|
8
7
|
skipTests?: boolean;
|
9
8
|
skipImport?: boolean;
|
@@ -7,25 +7,19 @@
|
|
7
7
|
"description": "Creates a new Angular directive.",
|
8
8
|
"additionalProperties": false,
|
9
9
|
"properties": {
|
10
|
-
"
|
10
|
+
"path": {
|
11
11
|
"type": "string",
|
12
|
-
"description": "The
|
12
|
+
"description": "The path at which to create the directive file.",
|
13
|
+
"x-prompt": "Where to put the directive?",
|
13
14
|
"$default": {
|
14
15
|
"$source": "argv",
|
15
16
|
"index": 0
|
16
|
-
}
|
17
|
-
"x-prompt": "What name would you like to use for the directive?"
|
18
|
-
},
|
19
|
-
"directory": {
|
20
|
-
"type": "string",
|
21
|
-
"description": "The directory at which to create the directive file. When `--nameAndDirectoryFormat=as-provided`, it will be relative to the current working directory. Otherwise, it will be relative to the workspace root.",
|
22
|
-
"aliases": ["dir", "path"],
|
23
|
-
"x-priority": "important"
|
17
|
+
}
|
24
18
|
},
|
25
|
-
"
|
26
|
-
"description": "Whether to generate the directive in the directory as provided, relative to the current working directory and ignoring the project (`as-provided`) or generate it using the project and directory relative to the workspace root (`derived`).",
|
19
|
+
"name": {
|
27
20
|
"type": "string",
|
28
|
-
"
|
21
|
+
"description": "The name of the new directive.",
|
22
|
+
"x-prompt": "What name would you like to use for the directive?"
|
29
23
|
},
|
30
24
|
"prefix": {
|
31
25
|
"type": "string",
|
@@ -77,5 +71,5 @@
|
|
77
71
|
"description": "Skip formatting of files."
|
78
72
|
}
|
79
73
|
},
|
80
|
-
"required": ["
|
74
|
+
"required": ["path"]
|
81
75
|
}
|
@@ -16,7 +16,6 @@ async function addRemote(tree, schema) {
|
|
16
16
|
directory: schema.remoteDirectory,
|
17
17
|
host: schema.host,
|
18
18
|
standalone: schema.standalone,
|
19
|
-
projectNameAndRootFormat: schema.projectNameAndRootFormat,
|
20
19
|
unitTestRunner: schema.unitTestRunner ?? test_runners_1.UnitTestRunner.Jest,
|
21
20
|
e2eTestRunner: schema.e2eTestRunner ?? test_runners_1.E2eTestRunner.Cypress,
|
22
21
|
skipFormat: true,
|
@@ -26,7 +25,6 @@ async function addRemote(tree, schema) {
|
|
26
25
|
name: schema.remote,
|
27
26
|
directory: schema.remoteDirectory,
|
28
27
|
projectType: 'application',
|
29
|
-
projectNameAndRootFormat: schema.projectNameAndRootFormat,
|
30
28
|
});
|
31
29
|
projectRoot = remoteRoot;
|
32
30
|
remoteName = projectName;
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { type ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils';
|
2
1
|
import { UnitTestRunner, E2eTestRunner } from '../utils/testing';
|
3
2
|
|
4
3
|
export interface Schema {
|
@@ -7,7 +6,6 @@ export interface Schema {
|
|
7
6
|
remote: string;
|
8
7
|
remoteDirectory?: string;
|
9
8
|
host?: string;
|
10
|
-
projectNameAndRootFormat?: ProjectNameAndRootFormat;
|
11
9
|
unitTestRunner?: UnitTestRunner;
|
12
10
|
e2eTestRunner?: E2eTestRunner;
|
13
11
|
standalone?: boolean;
|
@@ -37,11 +37,6 @@
|
|
37
37
|
"description": "The directory of the new remote application if one needs to be created.",
|
38
38
|
"type": "string"
|
39
39
|
},
|
40
|
-
"projectNameAndRootFormat": {
|
41
|
-
"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`).",
|
42
|
-
"type": "string",
|
43
|
-
"enum": ["as-provided", "derived"]
|
44
|
-
},
|
45
40
|
"style": {
|
46
41
|
"description": "The file extension to be used for style files for the remote if one needs to be created.",
|
47
42
|
"type": "string",
|
@@ -4,14 +4,16 @@ exports.host = host;
|
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
6
6
|
const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
|
7
|
+
const js_1 = require("@nx/js");
|
8
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
7
9
|
const test_runners_1 = require("../../utils/test-runners");
|
8
10
|
const application_1 = tslib_1.__importDefault(require("../application/application"));
|
9
11
|
const remote_1 = tslib_1.__importDefault(require("../remote/remote"));
|
10
12
|
const setup_mf_1 = require("../setup-mf/setup-mf");
|
11
|
-
const lib_1 = require("./lib");
|
12
13
|
const add_mf_env_to_inputs_1 = require("../utils/add-mf-env-to-inputs");
|
13
|
-
const
|
14
|
+
const lib_1 = require("./lib");
|
14
15
|
async function host(tree, schema) {
|
16
|
+
(0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(tree, 'angular', 'host');
|
15
17
|
const { typescriptConfiguration = true, ...options } = schema;
|
16
18
|
options.standalone = options.standalone ?? true;
|
17
19
|
const projects = (0, devkit_1.getProjects)(tree);
|
@@ -37,13 +39,12 @@ async function host(tree, schema) {
|
|
37
39
|
}
|
38
40
|
});
|
39
41
|
}
|
40
|
-
|
42
|
+
await (0, project_name_and_root_utils_1.ensureProjectName)(tree, options, 'application');
|
43
|
+
const { projectName: hostProjectName, projectRoot: appRoot } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(tree, {
|
41
44
|
name: options.name,
|
42
45
|
projectType: 'application',
|
43
46
|
directory: options.directory,
|
44
|
-
projectNameAndRootFormat: options.projectNameAndRootFormat,
|
45
47
|
});
|
46
|
-
options.projectNameAndRootFormat = projectNameAndRootFormat;
|
47
48
|
const appInstallTask = await (0, application_1.default)(tree, {
|
48
49
|
...options,
|
49
50
|
standalone: options.standalone,
|
@@ -1,10 +1,10 @@
|
|
1
|
-
import type { ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils';
|
2
1
|
import type { Linter, LinterType } from '@nx/eslint';
|
3
2
|
import type { E2eTestRunner, UnitTestRunner } from '../../utils/test-runners';
|
4
3
|
import type { Styles } from '../utils/types';
|
5
4
|
|
6
5
|
export interface Schema {
|
7
|
-
|
6
|
+
directory: string;
|
7
|
+
name?: string;
|
8
8
|
remotes?: string[];
|
9
9
|
dynamic?: boolean;
|
10
10
|
setParserOptionsProject?: boolean;
|
@@ -14,8 +14,6 @@ export interface Schema {
|
|
14
14
|
prefix?: string;
|
15
15
|
style?: Styles;
|
16
16
|
skipTests?: boolean;
|
17
|
-
directory?: string;
|
18
|
-
projectNameAndRootFormat?: ProjectNameAndRootFormat;
|
19
17
|
tags?: string;
|
20
18
|
linter?: Linter | LinterType;
|
21
19
|
unitTestRunner?: UnitTestRunner;
|
@@ -12,14 +12,20 @@
|
|
12
12
|
}
|
13
13
|
],
|
14
14
|
"properties": {
|
15
|
-
"
|
15
|
+
"directory": {
|
16
|
+
"description": "The directory of the new application.",
|
16
17
|
"type": "string",
|
17
|
-
"description": "The name to give to the host Angular application.",
|
18
18
|
"$default": {
|
19
19
|
"$source": "argv",
|
20
20
|
"index": 0
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"x-prompt": "Which directory do you want to create the application in?"
|
23
|
+
},
|
24
|
+
"name": {
|
25
|
+
"type": "string",
|
26
|
+
"description": "The name to give to the host Angular application.",
|
27
|
+
"pattern": "^[a-zA-Z][^:]*$",
|
28
|
+
"x-priority": "important"
|
23
29
|
},
|
24
30
|
"remotes": {
|
25
31
|
"type": "array",
|
@@ -31,15 +37,6 @@
|
|
31
37
|
"description": "Should the host application use dynamic federation?",
|
32
38
|
"default": false
|
33
39
|
},
|
34
|
-
"directory": {
|
35
|
-
"description": "The directory of the new application.",
|
36
|
-
"type": "string"
|
37
|
-
},
|
38
|
-
"projectNameAndRootFormat": {
|
39
|
-
"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`).",
|
40
|
-
"type": "string",
|
41
|
-
"enum": ["as-provided", "derived"]
|
42
|
-
},
|
43
40
|
"style": {
|
44
41
|
"description": "The file extension to be used for style files.",
|
45
42
|
"type": "string",
|
@@ -181,5 +178,5 @@
|
|
181
178
|
}
|
182
179
|
},
|
183
180
|
"additionalProperties": false,
|
184
|
-
"required": ["
|
181
|
+
"required": ["directory"]
|
185
182
|
}
|
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.angularInitGenerator = angularInitGenerator;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const add_plugin_1 = require("@nx/devkit/src/utils/add-plugin");
|
6
|
-
const
|
6
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
7
7
|
const plugin_1 = require("../../plugins/plugin");
|
8
|
+
const version_utils_1 = require("../utils/version-utils");
|
8
9
|
async function angularInitGenerator(tree, options) {
|
10
|
+
(0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(tree, 'angular', 'init');
|
9
11
|
ignoreAngularCacheDirectory(tree);
|
10
12
|
const installTask = installAngularDevkitCoreIfMissing(tree, options);
|
11
13
|
// For Angular inference plugin, we only want it during import since our
|
@@ -9,8 +9,9 @@ async function addStandaloneComponent(tree, { libraryOptions, componentOptions }
|
|
9
9
|
await (0, component_1.componentGenerator)(tree, {
|
10
10
|
...componentOptions,
|
11
11
|
name: componentOptions.name,
|
12
|
-
|
13
|
-
|
12
|
+
path: (0, devkit_1.joinPathFragments)(libraryOptions.projectRoot, 'src', 'lib', componentOptions.flat
|
13
|
+
? `${componentOptions.name}`
|
14
|
+
: `${componentOptions.name}/${componentOptions.name}`),
|
14
15
|
standalone: true,
|
15
16
|
export: true,
|
16
17
|
skipFormat: true,
|
@@ -22,12 +22,12 @@ async function normalizeOptions(host, schema) {
|
|
22
22
|
skipModule: schema.skipModule || schema.standalone,
|
23
23
|
...schema,
|
24
24
|
};
|
25
|
+
await (0, project_name_and_root_utils_1.ensureProjectName)(host, options, 'library');
|
25
26
|
const { projectName, names: projectNames, projectRoot, importPath, } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
|
26
27
|
name: options.name,
|
27
28
|
projectType: 'library',
|
28
29
|
directory: options.directory,
|
29
30
|
importPath: options.importPath,
|
30
|
-
projectNameAndRootFormat: options.projectNameAndRootFormat,
|
31
31
|
});
|
32
32
|
const fileName = options.simpleName
|
33
33
|
? projectNames.projectSimpleName
|
@@ -2,12 +2,12 @@ import { UnitTestRunner } from '../../../utils/test-runners';
|
|
2
2
|
import type { Linter, LinterType } from '@nx/eslint';
|
3
3
|
export interface NormalizedSchema {
|
4
4
|
libraryOptions: {
|
5
|
-
|
5
|
+
directory: string;
|
6
|
+
name?: string;
|
6
7
|
addTailwind?: boolean;
|
7
8
|
skipFormat?: boolean;
|
8
9
|
simpleName?: boolean;
|
9
10
|
addModuleSpec?: boolean;
|
10
|
-
directory?: string;
|
11
11
|
sourceDir?: string;
|
12
12
|
buildable?: boolean;
|
13
13
|
publishable?: boolean;
|
@@ -22,7 +22,9 @@ const add_jest_1 = require("../utils/add-jest");
|
|
22
22
|
const set_generator_defaults_1 = require("./lib/set-generator-defaults");
|
23
23
|
const ensure_angular_dependencies_1 = require("../utils/ensure-angular-dependencies");
|
24
24
|
const log_show_project_command_1 = require("@nx/devkit/src/utils/log-show-project-command");
|
25
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
25
26
|
async function libraryGenerator(tree, schema) {
|
27
|
+
(0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(tree, 'angular', 'library');
|
26
28
|
// Do some validation checks
|
27
29
|
if (!schema.routing && schema.lazy) {
|
28
30
|
throw new Error(`To use "--lazy" option, "--routing" must also be set.`);
|
@@ -1,15 +1,13 @@
|
|
1
|
-
import type { ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils';
|
2
1
|
import type { Linter, LinterType } from '@nx/eslint';
|
3
2
|
import type { UnitTestRunner } from '../../utils/test-runners';
|
4
3
|
|
5
4
|
export interface Schema {
|
6
|
-
|
5
|
+
directory: string;
|
6
|
+
name?: string;
|
7
7
|
addTailwind?: boolean;
|
8
8
|
skipFormat?: boolean;
|
9
9
|
simpleName?: boolean;
|
10
10
|
addModuleSpec?: boolean;
|
11
|
-
directory?: string;
|
12
|
-
projectNameAndRootFormat?: ProjectNameAndRootFormat;
|
13
11
|
sourceDir?: string;
|
14
12
|
buildable?: boolean;
|
15
13
|
publishable?: boolean;
|
@@ -9,22 +9,16 @@
|
|
9
9
|
"name": {
|
10
10
|
"type": "string",
|
11
11
|
"description": "The name of the library.",
|
12
|
-
"
|
13
|
-
"$source": "argv",
|
14
|
-
"index": 0
|
15
|
-
},
|
16
|
-
"x-prompt": "What name would you like to use for the library?",
|
17
|
-
"pattern": "(?:^@[a-zA-Z0-9-*~][a-zA-Z0-9-*._~]*\\/[a-zA-Z0-9-~][a-zA-Z0-9-._~]*|^[a-zA-Z][^:]*)$"
|
12
|
+
"x-priority": "important"
|
18
13
|
},
|
19
14
|
"directory": {
|
20
15
|
"type": "string",
|
21
16
|
"description": "A directory where the library is placed.",
|
22
|
-
"
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
"
|
27
|
-
"enum": ["as-provided", "derived"]
|
17
|
+
"$default": {
|
18
|
+
"$source": "argv",
|
19
|
+
"index": 0
|
20
|
+
},
|
21
|
+
"x-prompt": "Which directory do you want to create the library in?"
|
28
22
|
},
|
29
23
|
"publishable": {
|
30
24
|
"type": "boolean",
|
@@ -203,6 +197,6 @@
|
|
203
197
|
}
|
204
198
|
},
|
205
199
|
"additionalProperties": false,
|
206
|
-
"required": ["
|
200
|
+
"required": ["directory"],
|
207
201
|
"examplesFile": "../../../docs/library-examples.md"
|
208
202
|
}
|
@@ -1,5 +1,3 @@
|
|
1
|
-
import { ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils';
|
2
|
-
|
3
1
|
export interface Schema {
|
4
2
|
projectName: string;
|
5
3
|
destination: string;
|
@@ -7,5 +5,4 @@ export interface Schema {
|
|
7
5
|
importPath?: string;
|
8
6
|
skipFormat?: boolean;
|
9
7
|
newProjectName?: string;
|
10
|
-
projectNameAndRootFormat?: ProjectNameAndRootFormat;
|
11
8
|
}
|
@@ -35,11 +35,6 @@
|
|
35
35
|
},
|
36
36
|
"x-priority": "important"
|
37
37
|
},
|
38
|
-
"projectNameAndRootFormat": {
|
39
|
-
"description": "Whether to generate the new project name and destination as provided (`as-provided`) or generate them composing their values and taking the configured layout into account (`derived`).",
|
40
|
-
"type": "string",
|
41
|
-
"enum": ["as-provided", "derived"]
|
42
|
-
},
|
43
38
|
"importPath": {
|
44
39
|
"type": "string",
|
45
40
|
"description": "The new import path to use in the `tsconfig.base.json`."
|
@@ -6,8 +6,7 @@ const devkit_1 = require("@nx/devkit");
|
|
6
6
|
async function normalizeOptions(tree, options) {
|
7
7
|
const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
|
8
8
|
name: options.name,
|
9
|
-
|
10
|
-
nameAndDirectoryFormat: options.nameAndDirectoryFormat,
|
9
|
+
path: options.path,
|
11
10
|
suffix: 'pipe',
|
12
11
|
});
|
13
12
|
const { className } = (0, devkit_1.names)(name);
|
@@ -1,9 +1,8 @@
|
|
1
1
|
import { NameAndDirectoryFormat } from '@nx/devkit/src/generators/artifact-name-and-directory-utils';
|
2
2
|
|
3
3
|
export interface Schema {
|
4
|
-
|
5
|
-
|
6
|
-
nameAndDirectoryFormat?: NameAndDirectoryFormat;
|
4
|
+
path: string;
|
5
|
+
name?: string;
|
7
6
|
skipTests?: boolean;
|
8
7
|
skipImport?: boolean;
|
9
8
|
standalone?: boolean;
|