@nx/angular 20.0.0-canary.20241001-8fa7065 → 20.0.0-canary.20241002-1d10a19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. package/package.json +7 -7
  2. package/src/builders/utilities/webpack.js +3 -3
  3. package/src/generators/application/lib/normalize-options.js +3 -4
  4. package/src/generators/application/schema.d.ts +2 -4
  5. package/src/generators/application/schema.json +7 -12
  6. package/src/generators/component/lib/normalize-options.js +1 -2
  7. package/src/generators/component/schema.d.ts +2 -5
  8. package/src/generators/component/schema.json +7 -13
  9. package/src/generators/directive/lib/normalize-options.js +1 -2
  10. package/src/generators/directive/schema.d.ts +2 -3
  11. package/src/generators/directive/schema.json +8 -14
  12. package/src/generators/federate-module/lib/add-remote.js +0 -2
  13. package/src/generators/federate-module/schema.d.ts +0 -2
  14. package/src/generators/federate-module/schema.json +0 -5
  15. package/src/generators/host/host.js +2 -3
  16. package/src/generators/host/schema.d.ts +2 -4
  17. package/src/generators/host/schema.json +10 -13
  18. package/src/generators/library/lib/add-standalone-component.js +3 -2
  19. package/src/generators/library/lib/normalize-options.js +1 -1
  20. package/src/generators/library/lib/normalized-schema.d.ts +2 -2
  21. package/src/generators/library/schema.d.ts +2 -4
  22. package/src/generators/library/schema.json +7 -13
  23. package/src/generators/move/schema.d.ts +0 -3
  24. package/src/generators/move/schema.json +0 -5
  25. package/src/generators/pipe/lib/normalize-options.js +1 -2
  26. package/src/generators/pipe/schema.d.ts +2 -3
  27. package/src/generators/pipe/schema.json +7 -22
  28. package/src/generators/remote/remote.js +2 -3
  29. package/src/generators/remote/schema.d.ts +2 -4
  30. package/src/generators/remote/schema.json +10 -13
  31. package/src/generators/scam/lib/normalize-options.js +1 -2
  32. package/src/generators/scam/scam.js +0 -2
  33. package/src/generators/scam/schema.d.ts +3 -3
  34. package/src/generators/scam/schema.json +8 -23
  35. package/src/generators/scam-directive/lib/normalize-options.js +1 -2
  36. package/src/generators/scam-directive/scam-directive.js +0 -2
  37. package/src/generators/scam-directive/schema.d.ts +3 -3
  38. package/src/generators/scam-directive/schema.json +8 -3
  39. package/src/generators/scam-pipe/lib/normalize-options.js +1 -2
  40. package/src/generators/scam-pipe/scam-pipe.js +0 -2
  41. package/src/generators/scam-pipe/schema.d.ts +3 -3
  42. package/src/generators/scam-pipe/schema.json +8 -23
  43. package/src/generators/utils/testing.js +14 -17
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/angular",
3
- "version": "20.0.0-canary.20241001-8fa7065",
3
+ "version": "20.0.0-canary.20241002-1d10a19",
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": {
@@ -80,12 +80,12 @@
80
80
  "webpack-merge": "^5.8.0",
81
81
  "webpack": "^5.88.0",
82
82
  "@module-federation/enhanced": "0.6.6",
83
- "@nx/devkit": "20.0.0-canary.20241001-8fa7065",
84
- "@nx/js": "20.0.0-canary.20241001-8fa7065",
85
- "@nx/eslint": "20.0.0-canary.20241001-8fa7065",
86
- "@nx/webpack": "20.0.0-canary.20241001-8fa7065",
87
- "@nx/web": "20.0.0-canary.20241001-8fa7065",
88
- "@nx/workspace": "20.0.0-canary.20241001-8fa7065",
83
+ "@nx/devkit": "20.0.0-canary.20241002-1d10a19",
84
+ "@nx/js": "20.0.0-canary.20241002-1d10a19",
85
+ "@nx/eslint": "20.0.0-canary.20241002-1d10a19",
86
+ "@nx/webpack": "20.0.0-canary.20241002-1d10a19",
87
+ "@nx/web": "20.0.0-canary.20241002-1d10a19",
88
+ "@nx/workspace": "20.0.0-canary.20241002-1d10a19",
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
- newConfig = config(baseWebpackConfig, options, target);
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);
@@ -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
- const { projectName: appProjectName, projectRoot: appProjectRoot, projectNameAndRootFormat, } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
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
- name: string;
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
- "name": {
10
- "description": "The name of the application.",
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": "What name would you like to use for the application?",
17
- "pattern": "^[a-zA-Z][^:]*$"
16
+ "x-prompt": "Which directory do you want to create the application in?"
18
17
  },
19
- "directory": {
20
- "description": "The directory of the new application.",
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": ["name"],
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
- directory: options.directory,
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
- name: string;
5
- directory?: string;
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
- "name": {
10
+ "path": {
11
11
  "type": "string",
12
- "description": "The name of the component.",
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": "What name would you like to use for the component?"
17
+ "x-prompt": "Where to create the component?"
18
18
  },
19
- "directory": {
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
- "enum": ["as-provided", "derived"]
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": ["name"],
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
- directory: options.directory,
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
- name: string;
5
- directory?: string;
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
- "name": {
10
+ "path": {
11
11
  "type": "string",
12
- "description": "The name of the new directive.",
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
- "nameAndDirectoryFormat": {
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
- "enum": ["as-provided", "derived"]
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": ["name"]
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",
@@ -37,13 +37,12 @@ async function host(tree, schema) {
37
37
  }
38
38
  });
39
39
  }
40
- const { projectName: hostProjectName, projectNameAndRootFormat, projectRoot: appRoot, } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(tree, {
40
+ await (0, project_name_and_root_utils_1.ensureProjectName)(tree, options, 'application');
41
+ const { projectName: hostProjectName, projectRoot: appRoot } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(tree, {
41
42
  name: options.name,
42
43
  projectType: 'application',
43
44
  directory: options.directory,
44
- projectNameAndRootFormat: options.projectNameAndRootFormat,
45
45
  });
46
- options.projectNameAndRootFormat = projectNameAndRootFormat;
47
46
  const appInstallTask = await (0, application_1.default)(tree, {
48
47
  ...options,
49
48
  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
- name: string;
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
- "name": {
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
- "pattern": "^[a-zA-Z][^:]*$"
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": ["name"]
181
+ "required": ["directory"]
185
182
  }
@@ -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
- directory: (0, devkit_1.joinPathFragments)(libraryOptions.projectRoot, 'src', 'lib', componentOptions.flat ? '' : componentOptions.name),
13
- nameAndDirectoryFormat: 'as-provided',
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
- name: string;
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;
@@ -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
- name: string;
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
- "$default": {
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
- "x-priority": "important"
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"]
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": ["name"],
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
- directory: options.directory,
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
- name: string;
5
- directory?: string;
6
- nameAndDirectoryFormat?: NameAndDirectoryFormat;
4
+ path: string;
5
+ name?: string;
7
6
  skipTests?: boolean;
8
7
  skipImport?: boolean;
9
8
  standalone?: boolean;
@@ -7,34 +7,19 @@
7
7
  "additionalProperties": false,
8
8
  "description": "Creates an Angular pipe.",
9
9
  "properties": {
10
- "name": {
10
+ "path": {
11
11
  "type": "string",
12
- "description": "The name of the pipe.",
12
+ "description": "The path at which to create the pipe file, relative to the workspace root.",
13
13
  "$default": {
14
14
  "$source": "argv",
15
15
  "index": 0
16
16
  },
17
- "x-prompt": "What name would you like to use for the pipe?"
18
- },
19
- "directory": {
20
- "type": "string",
21
- "description": "The directory at which to create the pipe 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 pipe 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`).",
27
- "type": "string",
28
- "enum": ["as-provided", "derived"]
17
+ "x-prompt": "What is the path of the new pipe?"
29
18
  },
30
- "project": {
19
+ "name": {
31
20
  "type": "string",
32
- "description": "The name of the project.",
33
- "$default": {
34
- "$source": "projectName"
35
- },
36
- "x-dropdown": "projects",
37
- "x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx v20."
21
+ "description": "The name of the pipe.",
22
+ "x-prompt": "What name would you like to use for the pipe?"
38
23
  },
39
24
  "skipTests": {
40
25
  "type": "boolean",
@@ -67,5 +52,5 @@
67
52
  "description": "Skip formatting of files."
68
53
  }
69
54
  },
70
- "required": ["name"]
55
+ "required": ["path"]
71
56
  }
@@ -16,13 +16,12 @@ async function remote(tree, schema) {
16
16
  if (options.host && !projects.has(options.host)) {
17
17
  throw new Error(`The name of the application to be used as the host app does not exist. (${options.host})`);
18
18
  }
19
- const { projectName: remoteProjectName, projectNameAndRootFormat } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(tree, {
19
+ await (0, project_name_and_root_utils_1.ensureProjectName)(tree, options, 'application');
20
+ const { projectName: remoteProjectName } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(tree, {
20
21
  name: options.name,
21
22
  projectType: 'application',
22
23
  directory: options.directory,
23
- projectNameAndRootFormat: options.projectNameAndRootFormat,
24
24
  });
25
- options.projectNameAndRootFormat = projectNameAndRootFormat;
26
25
  const port = options.port ?? (0, lib_1.findNextAvailablePort)(tree);
27
26
  const appInstallTask = await (0, application_1.applicationGenerator)(tree, {
28
27
  ...options,
@@ -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
- name: string;
6
+ directory: string;
7
+ name?: string;
8
8
  host?: string;
9
9
  port?: number;
10
10
  setParserOptionsProject?: boolean;
@@ -13,8 +13,6 @@ export interface Schema {
13
13
  prefix?: string;
14
14
  style?: Styles;
15
15
  skipTests?: boolean;
16
- directory?: string;
17
- projectNameAndRootFormat?: ProjectNameAndRootFormat;
18
16
  tags?: string;
19
17
  linter?: Linter | LinterType;
20
18
  unitTestRunner?: UnitTestRunner;
@@ -12,14 +12,20 @@
12
12
  }
13
13
  ],
14
14
  "properties": {
15
- "name": {
15
+ "directory": {
16
+ "description": "The directory of the new application.",
16
17
  "type": "string",
17
- "description": "The name to give to the remote Angular app.",
18
18
  "$default": {
19
19
  "$source": "argv",
20
20
  "index": 0
21
21
  },
22
- "pattern": "^[a-zA-Z][^:]*$"
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 remote Angular app.",
27
+ "pattern": "^[a-zA-Z][^:]*$",
28
+ "x-priority": "important"
23
29
  },
24
30
  "host": {
25
31
  "type": "string",
@@ -31,15 +37,6 @@
31
37
  "type": "number",
32
38
  "description": "The port on which this app should be served."
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",
@@ -174,5 +171,5 @@
174
171
  }
175
172
  },
176
173
  "additionalProperties": false,
177
- "required": ["name"]
174
+ "required": ["directory"]
178
175
  }
@@ -7,8 +7,7 @@ async function normalizeOptions(tree, options) {
7
7
  options.type ??= 'component';
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
- directory: options.directory,
11
- nameAndDirectoryFormat: options.nameAndDirectoryFormat,
10
+ path: options.path,
12
11
  suffix: options.type ?? 'component',
13
12
  });
14
13
  const { className } = (0, devkit_1.names)(name);
@@ -13,8 +13,6 @@ async function scamGenerator(tree, rawOptions) {
13
13
  export: false,
14
14
  standalone: false,
15
15
  skipFormat: true,
16
- // options are already normalize, use them as is
17
- nameAndDirectoryFormat: 'as-provided',
18
16
  });
19
17
  (0, lib_1.convertComponentToScam)(tree, options);
20
18
  (0, export_scam_1.exportScam)(tree, options);
@@ -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
- name: string;
5
- directory?: string;
6
- nameAndDirectoryFormat?: NameAndDirectoryFormat;
4
+ path: string;
5
+ name?: string;
7
6
  displayBlock?: boolean;
8
7
  inlineStyle?: boolean;
9
8
  inlineTemplate?: boolean;
@@ -21,6 +20,7 @@ export interface Schema {
21
20
  }
22
21
 
23
22
  export interface NormalizedSchema extends Schema {
23
+ name: string;
24
24
  directory: string;
25
25
  projectName: string;
26
26
  fileName: string;
@@ -6,41 +6,26 @@
6
6
  "type": "object",
7
7
  "examples": [
8
8
  {
9
- "command": "nx g @nx/angular:scam my-sample --directory=my-lib/src/lib/my-sample",
9
+ "command": "nx g @nx/angular:scam my-lib/src/lib/my-sample/my-sample",
10
10
  "description": "Generate a `MySampleComponent` component in the `my-lib` library."
11
11
  }
12
12
  ],
13
13
  "description": "Creates a new Angular SCAM.",
14
14
  "additionalProperties": false,
15
15
  "properties": {
16
- "name": {
16
+ "path": {
17
17
  "type": "string",
18
- "description": "The name of the component.",
18
+ "description": "The path at which to create the SCAM file, relative to the workspace root.",
19
19
  "$default": {
20
20
  "$source": "argv",
21
21
  "index": 0
22
22
  },
23
- "x-prompt": "What name would you like to use for the component?"
23
+ "x-prompt": "What is the path of the new SCAM?"
24
24
  },
25
- "directory": {
26
- "type": "string",
27
- "description": "The directory at which to create the SCAM files. When `--nameAndDirectoryFormat=as-provided`, it will be relative to the current working directory. Otherwise, it will be relative to the workspace root.",
28
- "aliases": ["dir", "path"],
29
- "x-priority": "important"
30
- },
31
- "nameAndDirectoryFormat": {
32
- "description": "Whether to generate the SCAM 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`).",
33
- "type": "string",
34
- "enum": ["as-provided", "derived"]
35
- },
36
- "project": {
25
+ "name": {
37
26
  "type": "string",
38
- "description": "The name of the project.",
39
- "$default": {
40
- "$source": "projectName"
41
- },
42
- "x-dropdown": "projects",
43
- "x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx v20."
27
+ "description": "The name of the component.",
28
+ "x-prompt": "What name would you like to use for the component?"
44
29
  },
45
30
  "displayBlock": {
46
31
  "description": "Specifies if the style will contain `:host { display: block; }`.",
@@ -132,5 +117,5 @@
132
117
  "x-priority": "internal"
133
118
  }
134
119
  },
135
- "required": ["name"]
120
+ "required": ["path"]
136
121
  }
@@ -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
- directory: options.directory,
10
- nameAndDirectoryFormat: options.nameAndDirectoryFormat,
9
+ path: options.path,
11
10
  suffix: 'directive',
12
11
  });
13
12
  const { className } = (0, devkit_1.names)(name);
@@ -13,8 +13,6 @@ async function scamDirectiveGenerator(tree, rawOptions) {
13
13
  export: false,
14
14
  standalone: false,
15
15
  skipFormat: true,
16
- // options are already normalize, use them as is
17
- nameAndDirectoryFormat: 'as-provided',
18
16
  });
19
17
  (0, lib_1.convertDirectiveToScam)(tree, options);
20
18
  (0, export_scam_1.exportScam)(tree, options);
@@ -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
- name: string;
5
- directory?: string;
6
- nameAndDirectoryFormat?: NameAndDirectoryFormat;
4
+ path: string;
5
+ name?: string;
7
6
  skipTests?: boolean;
8
7
  inlineScam?: boolean;
9
8
  prefix?: string;
@@ -13,6 +12,7 @@ export interface Schema {
13
12
  }
14
13
 
15
14
  export interface NormalizedSchema extends Schema {
15
+ name: string;
16
16
  directory: string;
17
17
  export: boolean;
18
18
  fileName: string;
@@ -13,13 +13,18 @@
13
13
  "description": "Creates a new, generic Angular directive definition in the given or default project.",
14
14
  "additionalProperties": false,
15
15
  "properties": {
16
- "name": {
16
+ "path": {
17
17
  "type": "string",
18
- "description": "The name of the directive.",
18
+ "description": "The path at which to create the SCAM Directive files, relative to the workspace root.",
19
19
  "$default": {
20
20
  "$source": "argv",
21
21
  "index": 0
22
22
  },
23
+ "x-prompt": "What is the path of the new directive?"
24
+ },
25
+ "name": {
26
+ "type": "string",
27
+ "description": "The name of the directive.",
23
28
  "x-prompt": "What name would you like to use for the directive?",
24
29
  "x-priority": "important"
25
30
  },
@@ -92,5 +97,5 @@
92
97
  "x-priority": "internal"
93
98
  }
94
99
  },
95
- "required": ["name"]
100
+ "required": ["path"]
96
101
  }
@@ -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
- directory: options.directory,
10
- nameAndDirectoryFormat: options.nameAndDirectoryFormat,
9
+ path: options.path,
11
10
  suffix: 'pipe',
12
11
  });
13
12
  const { className } = (0, devkit_1.names)(name);
@@ -13,8 +13,6 @@ async function scamPipeGenerator(tree, rawOptions) {
13
13
  export: false,
14
14
  standalone: false,
15
15
  skipFormat: true,
16
- // options are already normalize, use them as is
17
- nameAndDirectoryFormat: 'as-provided',
18
16
  });
19
17
  (0, lib_1.convertPipeToScam)(tree, options);
20
18
  (0, export_scam_1.exportScam)(tree, options);
@@ -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
- name: string;
5
- directory?: string;
6
- nameAndDirectoryFormat?: NameAndDirectoryFormat;
4
+ path: string;
5
+ name?: string;
7
6
  skipTests?: boolean;
8
7
  inlineScam?: boolean;
9
8
  export?: boolean;
@@ -11,6 +10,7 @@ export interface Schema {
11
10
  }
12
11
 
13
12
  export interface NormalizedSchema extends Schema {
13
+ name: string;
14
14
  directory: string;
15
15
  export: boolean;
16
16
  fileName: string;
@@ -6,43 +6,28 @@
6
6
  "type": "object",
7
7
  "examples": [
8
8
  {
9
- "command": "nx g @nx/angular:scam-pipe --project=my-lib --flat=false my-transformation",
9
+ "command": "nx g @nx/angular:scam-pipe mylib/src/lib/my-transformation/my-transformation",
10
10
  "description": "Generates a `MyTransformationPipe` in a `my-transformation` folder in the `my-lib` project"
11
11
  }
12
12
  ],
13
13
  "description": "Creates a new, generic Angular pipe definition in the given or default project.",
14
14
  "additionalProperties": false,
15
15
  "properties": {
16
- "name": {
16
+ "path": {
17
17
  "type": "string",
18
- "description": "The name of the pipe.",
18
+ "description": "The path at which to create the pipe file, relative to the workspace root.",
19
19
  "$default": {
20
20
  "$source": "argv",
21
21
  "index": 0
22
22
  },
23
- "x-prompt": "What name would you like to use for the pipe?",
24
- "x-priority": "important"
23
+ "x-prompt": "What is the path of the new pipe?"
25
24
  },
26
- "directory": {
25
+ "name": {
27
26
  "type": "string",
28
- "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.",
29
- "aliases": ["dir", "path"],
27
+ "description": "The name of the pipe.",
28
+ "x-prompt": "What name would you like to use for the pipe?",
30
29
  "x-priority": "important"
31
30
  },
32
- "nameAndDirectoryFormat": {
33
- "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`).",
34
- "type": "string",
35
- "enum": ["as-provided", "derived"]
36
- },
37
- "project": {
38
- "type": "string",
39
- "description": "The name of the project.",
40
- "$default": {
41
- "$source": "projectName"
42
- },
43
- "x-dropdown": "projects",
44
- "x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx v20."
45
- },
46
31
  "skipTests": {
47
32
  "type": "boolean",
48
33
  "description": "Do not create `spec.ts` test files for the new pipe.",
@@ -73,5 +58,5 @@
73
58
  "x-priority": "internal"
74
59
  }
75
60
  },
76
- "required": ["name"]
61
+ "required": ["path"]
77
62
  }
@@ -17,22 +17,20 @@ const remote_1 = require("../remote/remote");
17
17
  async function generateTestApplication(tree, options) {
18
18
  tree.write('.gitignore', '');
19
19
  await (0, application_1.applicationGenerator)(tree, {
20
- projectNameAndRootFormat: 'as-provided',
21
20
  ...options,
22
21
  });
23
22
  }
24
23
  async function generateTestHostApplication(tree, options) {
25
24
  tree.write('.gitignore', '');
26
- await (0, host_1.host)(tree, { projectNameAndRootFormat: 'as-provided', ...options });
25
+ await (0, host_1.host)(tree, { ...options });
27
26
  }
28
27
  async function generateTestRemoteApplication(tree, options) {
29
28
  tree.write('.gitignore', '');
30
- await (0, remote_1.remote)(tree, { projectNameAndRootFormat: 'as-provided', ...options });
29
+ await (0, remote_1.remote)(tree, { ...options });
31
30
  }
32
31
  async function generateTestLibrary(tree, options) {
33
32
  tree.write('.gitignore', '');
34
33
  await (0, library_1.libraryGenerator)(tree, {
35
- projectNameAndRootFormat: 'as-provided',
36
34
  ...options,
37
35
  });
38
36
  }
@@ -40,19 +38,18 @@ async function createStorybookTestWorkspaceForLib(libName) {
40
38
  let tree = (0, testing_1.createTreeWithEmptyWorkspace)({ layout: 'apps-libs' });
41
39
  tree.write('.gitignore', '');
42
40
  await (0, library_1.libraryGenerator)(tree, {
43
- name: libName,
41
+ directory: libName,
44
42
  buildable: false,
45
43
  linter: eslint_1.Linter.EsLint,
46
44
  publishable: false,
47
45
  simpleName: false,
48
46
  skipFormat: true,
49
47
  unitTestRunner: test_runners_1.UnitTestRunner.Jest,
50
- projectNameAndRootFormat: 'as-provided',
51
48
  standalone: false,
52
49
  });
53
50
  await (0, component_1.componentGenerator)(tree, {
54
51
  name: 'test-button',
55
- directory: `${libName}/src/lib/test-button`,
52
+ path: `${libName}/src/lib/test-button/test-button`,
56
53
  standalone: false,
57
54
  skipFormat: true,
58
55
  });
@@ -82,7 +79,7 @@ export class TestButtonComponent {
82
79
  });
83
80
  await (0, component_1.componentGenerator)(tree, {
84
81
  name: 'barrel-button',
85
- directory: `${libName}/src/lib/barrel/barrel-button`,
82
+ path: `${libName}/src/lib/barrel/barrel-button/barrel-button`,
86
83
  module: 'barrel',
87
84
  standalone: false,
88
85
  skipFormat: true,
@@ -104,14 +101,14 @@ export class BarrelModule {}`);
104
101
  });
105
102
  await (0, component_1.componentGenerator)(tree, {
106
103
  name: 'variable-declare-button',
107
- directory: `${libName}/src/lib/variable-declare/variable-declare-button`,
104
+ path: `${libName}/src/lib/variable-declare/variable-declare-button/variable-declare-button`,
108
105
  module: 'variable-declare',
109
106
  standalone: false,
110
107
  skipFormat: true,
111
108
  });
112
109
  await (0, component_1.componentGenerator)(tree, {
113
110
  name: 'variable-declare-view',
114
- directory: `${libName}/src/lib/variable-declare/variable-declare-view`,
111
+ path: `${libName}/src/lib/variable-declare/variable-declare-view/variable-declare-view`,
115
112
  module: 'variable-declare',
116
113
  standalone: false,
117
114
  skipFormat: true,
@@ -139,21 +136,21 @@ export class VariableDeclareModule {}`);
139
136
  });
140
137
  await (0, component_1.componentGenerator)(tree, {
141
138
  name: 'variable-spread-declare-button',
142
- directory: `${libName}/src/lib/variable-spread-declare/variable-spread-declare-button`,
139
+ path: `${libName}/src/lib/variable-spread-declare/variable-spread-declare-button/variable-spread-declare-button`,
143
140
  module: 'variable-spread-declare',
144
141
  standalone: false,
145
142
  skipFormat: true,
146
143
  });
147
144
  await (0, component_1.componentGenerator)(tree, {
148
145
  name: 'variable-spread-declare-view',
149
- directory: `${libName}/src/lib/variable-spread-declare/variable-spread-declare-view`,
146
+ path: `${libName}/src/lib/variable-spread-declare/variable-spread-declare-view/variable-spread-declare-view`,
150
147
  module: 'variable-spread-declare',
151
148
  standalone: false,
152
149
  skipFormat: true,
153
150
  });
154
151
  await (0, component_1.componentGenerator)(tree, {
155
152
  name: 'variable-spread-declare-anotherview',
156
- directory: `${libName}/src/lib/variable-spread-declare/variable-spread-declare-anotherview`,
153
+ path: `${libName}/src/lib/variable-spread-declare/variable-spread-declare-anotherview/variable-spread-declare-anotherview`,
157
154
  module: 'variable-spread-declare',
158
155
  standalone: false,
159
156
  skipFormat: true,
@@ -181,14 +178,14 @@ export class VariableSpreadDeclareModule {}`);
181
178
  });
182
179
  await (0, component_1.componentGenerator)(tree, {
183
180
  name: 'cmp1',
184
- directory: `${libName}/src/lib/static-member-declarations/cmp1`,
181
+ path: `${libName}/src/lib/static-member-declarations/cmp1/cmp1`,
185
182
  module: 'static-member-declarations',
186
183
  standalone: false,
187
184
  skipFormat: true,
188
185
  });
189
186
  await (0, component_1.componentGenerator)(tree, {
190
187
  name: 'cmp2',
191
- directory: `${libName}/src/lib/static-member-declarations/cmp2`,
188
+ path: `${libName}/src/lib/static-member-declarations/cmp2/cmp2`,
192
189
  module: 'static-member-declarations',
193
190
  standalone: false,
194
191
  skipFormat: true,
@@ -215,13 +212,13 @@ export class StaticMemberDeclarationsModule {
215
212
  await (0, component_1.componentGenerator)(tree, {
216
213
  name: 'nested-button',
217
214
  module: 'nested',
218
- directory: `${libName}/src/lib/nested/nested-button`,
215
+ path: `${libName}/src/lib/nested/nested-button/nested-button`,
219
216
  standalone: false,
220
217
  skipFormat: true,
221
218
  });
222
219
  await (0, component_1.componentGenerator)(tree, {
223
220
  name: 'test-other',
224
- directory: `${libName}/src/lib/test-other`,
221
+ path: `${libName}/src/lib/test-other/test-other`,
225
222
  standalone: false,
226
223
  skipFormat: true,
227
224
  });