@angular/cli 14.0.0-next.4 → 14.0.0-next.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/bin/ng.js +3 -5
  2. package/lib/cli/index.d.ts +1 -2
  3. package/lib/cli/index.js +16 -45
  4. package/lib/config/schema.json +30 -15
  5. package/lib/config/workspace-schema.d.ts +6 -1
  6. package/lib/init.js +10 -9
  7. package/package.json +18 -20
  8. package/{models → src/analytics}/analytics-collector.d.ts +0 -0
  9. package/{models → src/analytics}/analytics-collector.js +8 -2
  10. package/src/analytics/analytics.d.ts +47 -0
  11. package/src/analytics/analytics.js +304 -0
  12. package/src/command-builder/architect-base-command-module.d.ts +23 -0
  13. package/src/command-builder/architect-base-command-module.js +103 -0
  14. package/src/command-builder/architect-command-module.d.ts +22 -0
  15. package/src/command-builder/architect-command-module.js +108 -0
  16. package/src/command-builder/command-module.d.ts +89 -0
  17. package/src/command-builder/command-module.js +191 -0
  18. package/{utilities/package-json.js → src/command-builder/command-runner.d.ts} +2 -2
  19. package/src/command-builder/command-runner.js +152 -0
  20. package/src/command-builder/schematics-command-module.d.ts +46 -0
  21. package/src/command-builder/schematics-command-module.js +335 -0
  22. package/src/command-builder/utilities/command.d.ts +13 -0
  23. package/src/command-builder/utilities/command.js +27 -0
  24. package/src/command-builder/utilities/json-help.d.ts +36 -0
  25. package/src/command-builder/utilities/json-help.js +94 -0
  26. package/src/command-builder/utilities/json-schema.d.ts +40 -0
  27. package/{utilities → src/command-builder/utilities}/json-schema.js +20 -121
  28. package/{models → src/command-builder/utilities}/schematic-engine-host.d.ts +0 -0
  29. package/{models → src/command-builder/utilities}/schematic-engine-host.js +0 -0
  30. package/src/command-builder/utilities/schematic-workflow.d.ts +14 -0
  31. package/src/command-builder/utilities/schematic-workflow.js +68 -0
  32. package/src/commands/add/cli.d.ts +33 -0
  33. package/{commands/add-impl.js → src/commands/add/cli.js} +108 -80
  34. package/src/commands/add/long-description.md +7 -0
  35. package/src/commands/analytics/cli.d.ts +16 -0
  36. package/src/commands/analytics/cli.js +35 -0
  37. package/src/commands/analytics/info/cli.d.ts +16 -0
  38. package/src/commands/analytics/info/cli.js +26 -0
  39. package/src/commands/analytics/settings/cli.d.ts +35 -0
  40. package/src/commands/analytics/settings/cli.js +61 -0
  41. package/src/commands/build/cli.d.ts +16 -0
  42. package/src/commands/build/cli.js +23 -0
  43. package/{commands/build-long.md → src/commands/build/long-description.md} +0 -0
  44. package/src/commands/cache/clean/cli.d.ts +17 -0
  45. package/src/commands/cache/clean/cli.js +32 -0
  46. package/src/commands/cache/cli.d.ts +17 -0
  47. package/src/commands/cache/cli.js +38 -0
  48. package/src/commands/cache/info/cli.d.ts +20 -0
  49. package/src/commands/cache/info/cli.js +82 -0
  50. package/src/commands/cache/long-description.md +53 -0
  51. package/src/commands/cache/settings/cli.d.ts +27 -0
  52. package/src/commands/cache/settings/cli.js +42 -0
  53. package/src/commands/cache/utilities.d.ts +11 -0
  54. package/src/commands/cache/utilities.js +50 -0
  55. package/src/commands/config/cli.d.ts +24 -0
  56. package/{commands/config-impl.js → src/commands/config/cli.js} +102 -89
  57. package/{commands/config-long.md → src/commands/config/long-description.md} +2 -2
  58. package/src/commands/deploy/cli.d.ts +16 -0
  59. package/src/commands/deploy/cli.js +35 -0
  60. package/{commands/deploy-long.md → src/commands/deploy/long-description.md} +0 -0
  61. package/src/commands/doc/cli.d.ts +23 -0
  62. package/{commands/doc-impl.js → src/commands/doc/cli.js} +41 -12
  63. package/src/commands/e2e/cli.d.ts +17 -0
  64. package/src/commands/e2e/cli.js +34 -0
  65. package/src/commands/extract-i18n/cli.d.ts +15 -0
  66. package/src/commands/extract-i18n/cli.js +20 -0
  67. package/src/commands/generate/cli.d.ts +39 -0
  68. package/src/commands/generate/cli.js +145 -0
  69. package/src/commands/lint/cli.d.ts +16 -0
  70. package/src/commands/lint/cli.js +31 -0
  71. package/{commands/lint-long.md → src/commands/lint/long-description.md} +0 -0
  72. package/src/commands/make-this-awesome/cli.d.ts +17 -0
  73. package/{commands/easter-egg-impl.js → src/commands/make-this-awesome/cli.js} +17 -10
  74. package/src/commands/new/cli.d.ts +27 -0
  75. package/src/commands/new/cli.js +77 -0
  76. package/src/commands/run/cli.d.ts +23 -0
  77. package/src/commands/run/cli.js +59 -0
  78. package/{commands/run-long.md → src/commands/run/long-description.md} +0 -0
  79. package/src/commands/serve/cli.d.ts +16 -0
  80. package/src/commands/serve/cli.js +21 -0
  81. package/src/commands/test/cli.d.ts +16 -0
  82. package/src/commands/test/cli.js +23 -0
  83. package/{commands/test-long.md → src/commands/test/long-description.md} +0 -0
  84. package/{commands/update-impl.d.ts → src/commands/update/cli.d.ts} +26 -9
  85. package/{commands/update-impl.js → src/commands/update/cli.js} +362 -316
  86. package/{commands/update-long.md → src/commands/update/long-description.md} +0 -0
  87. package/src/commands/update/schematic/index.js +33 -20
  88. package/src/commands/version/cli.d.ts +18 -0
  89. package/{commands/version-impl.js → src/commands/version/cli.js} +56 -74
  90. package/src/typings-bazel.d.ts +14 -0
  91. package/src/typings.d.ts +1 -14
  92. package/{utilities → src/utilities}/color.d.ts +0 -0
  93. package/{utilities → src/utilities}/color.js +5 -1
  94. package/{utilities → src/utilities}/config.d.ts +2 -2
  95. package/{utilities → src/utilities}/config.js +24 -16
  96. package/src/utilities/environment-options.d.ts +12 -0
  97. package/src/utilities/environment-options.js +24 -0
  98. package/{utilities → src/utilities}/find-up.d.ts +0 -0
  99. package/{utilities → src/utilities}/find-up.js +5 -1
  100. package/{utilities → src/utilities}/json-file.d.ts +0 -0
  101. package/{utilities → src/utilities}/json-file.js +0 -0
  102. package/{utilities → src/utilities}/log-file.d.ts +0 -0
  103. package/{utilities → src/utilities}/log-file.js +0 -0
  104. package/src/utilities/package-manager.d.ts +41 -0
  105. package/src/utilities/package-manager.js +276 -0
  106. package/{utilities → src/utilities}/package-metadata.d.ts +15 -37
  107. package/{utilities → src/utilities}/package-metadata.js +15 -27
  108. package/{utilities → src/utilities}/package-tree.d.ts +2 -2
  109. package/{utilities → src/utilities}/package-tree.js +5 -1
  110. package/{utilities → src/utilities}/project.d.ts +0 -0
  111. package/{utilities → src/utilities}/project.js +5 -1
  112. package/{utilities → src/utilities}/prompt.d.ts +0 -0
  113. package/{utilities → src/utilities}/prompt.js +7 -3
  114. package/{utilities → src/utilities}/spinner.d.ts +0 -0
  115. package/{utilities → src/utilities}/spinner.js +0 -0
  116. package/{utilities → src/utilities}/tty.d.ts +0 -0
  117. package/{utilities → src/utilities}/tty.js +0 -0
  118. package/{models → src/utilities}/version.d.ts +2 -1
  119. package/{models → src/utilities}/version.js +6 -6
  120. package/bin/postinstall/analytics-prompt.js +0 -27
  121. package/bin/postinstall/script.js +0 -16
  122. package/commands/add-impl.d.ts +0 -21
  123. package/commands/add.d.ts +0 -42
  124. package/commands/add.js +0 -10
  125. package/commands/add.json +0 -54
  126. package/commands/add.md +0 -10
  127. package/commands/analytics-impl.d.ts +0 -13
  128. package/commands/analytics-impl.js +0 -80
  129. package/commands/analytics-long.md +0 -8
  130. package/commands/analytics.d.ts +0 -46
  131. package/commands/analytics.js +0 -31
  132. package/commands/analytics.json +0 -37
  133. package/commands/build-impl.d.ts +0 -14
  134. package/commands/build-impl.js +0 -21
  135. package/commands/build.d.ts +0 -30
  136. package/commands/build.js +0 -10
  137. package/commands/build.json +0 -16
  138. package/commands/config-impl.d.ts +0 -15
  139. package/commands/config.d.ts +0 -34
  140. package/commands/config.js +0 -10
  141. package/commands/config.json +0 -43
  142. package/commands/definitions.json +0 -66
  143. package/commands/deploy-impl.d.ts +0 -15
  144. package/commands/deploy-impl.js +0 -36
  145. package/commands/deploy.d.ts +0 -30
  146. package/commands/deploy.js +0 -10
  147. package/commands/deploy.json +0 -34
  148. package/commands/doc-impl.d.ts +0 -13
  149. package/commands/doc.d.ts +0 -39
  150. package/commands/doc.js +0 -14
  151. package/commands/doc.json +0 -46
  152. package/commands/e2e-impl.d.ts +0 -16
  153. package/commands/e2e-impl.js +0 -36
  154. package/commands/e2e-long.md +0 -4
  155. package/commands/e2e.d.ts +0 -29
  156. package/commands/e2e.js +0 -10
  157. package/commands/e2e.json +0 -17
  158. package/commands/easter-egg-impl.d.ts +0 -12
  159. package/commands/easter-egg.d.ts +0 -14
  160. package/commands/easter-egg.js +0 -10
  161. package/commands/easter-egg.json +0 -12
  162. package/commands/extract-i18n-impl.d.ts +0 -14
  163. package/commands/extract-i18n-impl.js +0 -21
  164. package/commands/extract-i18n.d.ts +0 -29
  165. package/commands/extract-i18n.js +0 -10
  166. package/commands/extract-i18n.json +0 -15
  167. package/commands/generate-impl.d.ts +0 -18
  168. package/commands/generate-impl.js +0 -89
  169. package/commands/generate.d.ts +0 -37
  170. package/commands/generate.js +0 -10
  171. package/commands/generate.json +0 -31
  172. package/commands/help-impl.d.ts +0 -12
  173. package/commands/help-impl.js +0 -26
  174. package/commands/help-long.md +0 -7
  175. package/commands/help.d.ts +0 -17
  176. package/commands/help.js +0 -10
  177. package/commands/help.json +0 -13
  178. package/commands/lint-impl.d.ts +0 -16
  179. package/commands/lint-impl.js +0 -69
  180. package/commands/lint.d.ts +0 -29
  181. package/commands/lint.js +0 -10
  182. package/commands/lint.json +0 -36
  183. package/commands/new-impl.d.ts +0 -16
  184. package/commands/new-impl.js +0 -37
  185. package/commands/new.d.ts +0 -41
  186. package/commands/new.js +0 -10
  187. package/commands/new.json +0 -34
  188. package/commands/new.md +0 -16
  189. package/commands/run-impl.d.ts +0 -13
  190. package/commands/run-impl.js +0 -22
  191. package/commands/run.d.ts +0 -30
  192. package/commands/run.js +0 -10
  193. package/commands/run.json +0 -36
  194. package/commands/serve-impl.d.ts +0 -15
  195. package/commands/serve-impl.js +0 -24
  196. package/commands/serve.d.ts +0 -29
  197. package/commands/serve.js +0 -10
  198. package/commands/serve.json +0 -17
  199. package/commands/test-impl.d.ts +0 -15
  200. package/commands/test-impl.js +0 -22
  201. package/commands/test.d.ts +0 -29
  202. package/commands/test.js +0 -10
  203. package/commands/test.json +0 -17
  204. package/commands/update.d.ts +0 -61
  205. package/commands/update.js +0 -10
  206. package/commands/update.json +0 -78
  207. package/commands/version-impl.d.ts +0 -17
  208. package/commands/version.d.ts +0 -17
  209. package/commands/version.js +0 -10
  210. package/commands/version.json +0 -13
  211. package/commands.json +0 -20
  212. package/models/analytics.d.ts +0 -58
  213. package/models/analytics.js +0 -358
  214. package/models/architect-command.d.ts +0 -35
  215. package/models/architect-command.js +0 -364
  216. package/models/command-runner.d.ts +0 -24
  217. package/models/command-runner.js +0 -241
  218. package/models/command.d.ts +0 -34
  219. package/models/command.js +0 -143
  220. package/models/interface.d.ts +0 -196
  221. package/models/interface.js +0 -31
  222. package/models/parser.d.ts +0 -39
  223. package/models/parser.js +0 -349
  224. package/models/schematic-command.d.ts +0 -55
  225. package/models/schematic-command.js +0 -485
  226. package/utilities/install-package.d.ts +0 -16
  227. package/utilities/install-package.js +0 -193
  228. package/utilities/json-schema.d.ts +0 -17
  229. package/utilities/package-json.d.ts +0 -249
  230. package/utilities/package-manager.d.ts +0 -13
  231. package/utilities/package-manager.js +0 -106
@@ -0,0 +1,7 @@
1
+ Adds the npm package for a published library to your workspace, and configures
2
+ the project in the current working directory to use that library, as specified by the library's schematic.
3
+ For example, adding `@angular/pwa` configures your project for PWA support:
4
+
5
+ ```bash
6
+ ng add @angular/pwa
7
+ ```
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Argv } from 'yargs';
9
+ import { CommandModule, CommandModuleImplementation, Options } from '../../command-builder/command-module';
10
+ export declare class AnalyticsCommandModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ describe: string;
13
+ longDescriptionPath?: string;
14
+ builder(localYargs: Argv): Argv;
15
+ run(_options: Options<{}>): void;
16
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AnalyticsCommandModule = void 0;
11
+ const command_module_1 = require("../../command-builder/command-module");
12
+ const command_1 = require("../../command-builder/utilities/command");
13
+ const cli_1 = require("./info/cli");
14
+ const cli_2 = require("./settings/cli");
15
+ class AnalyticsCommandModule extends command_module_1.CommandModule {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.command = 'analytics';
19
+ this.describe = 'Configures the gathering of Angular CLI usage metrics. See https://angular.io/cli/usage-analytics-gathering';
20
+ }
21
+ builder(localYargs) {
22
+ const subcommands = [
23
+ cli_1.AnalyticsInfoCommandModule,
24
+ cli_2.AnalyticsDisableModule,
25
+ cli_2.AnalyticsEnableModule,
26
+ cli_2.AnalyticsPromptModule,
27
+ ].sort(); // sort by class name.
28
+ for (const module of subcommands) {
29
+ localYargs = (0, command_1.addCommandModuleToYargs)(localYargs, module, this.context);
30
+ }
31
+ return localYargs.demandCommand(1, command_1.demandCommandFailureMessage).strict();
32
+ }
33
+ run(_options) { }
34
+ }
35
+ exports.AnalyticsCommandModule = AnalyticsCommandModule;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Argv } from 'yargs';
9
+ import { CommandModule, CommandModuleImplementation, Options } from '../../../command-builder/command-module';
10
+ export declare class AnalyticsInfoCommandModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ describe: string;
13
+ longDescriptionPath?: string;
14
+ builder(localYargs: Argv): Argv;
15
+ run(_options: Options<{}>): Promise<void>;
16
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AnalyticsInfoCommandModule = void 0;
11
+ const analytics_1 = require("../../../analytics/analytics");
12
+ const command_module_1 = require("../../../command-builder/command-module");
13
+ class AnalyticsInfoCommandModule extends command_module_1.CommandModule {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.command = 'info';
17
+ this.describe = 'Prints analytics gathering and reporting configuration in the console.';
18
+ }
19
+ builder(localYargs) {
20
+ return localYargs.strict();
21
+ }
22
+ async run(_options) {
23
+ this.context.logger.info(await (0, analytics_1.getAnalyticsInfoString)());
24
+ }
25
+ }
26
+ exports.AnalyticsInfoCommandModule = AnalyticsInfoCommandModule;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Argv } from 'yargs';
9
+ import { CommandModule, CommandModuleImplementation, Options } from '../../../command-builder/command-module';
10
+ interface AnalyticsCommandArgs {
11
+ global: boolean;
12
+ }
13
+ declare abstract class AnalyticsSettingModule extends CommandModule<AnalyticsCommandArgs> implements CommandModuleImplementation<AnalyticsCommandArgs> {
14
+ longDescriptionPath?: string;
15
+ builder(localYargs: Argv): Argv<AnalyticsCommandArgs>;
16
+ abstract run({ global }: Options<AnalyticsCommandArgs>): Promise<void>;
17
+ }
18
+ export declare class AnalyticsDisableModule extends AnalyticsSettingModule implements CommandModuleImplementation<AnalyticsCommandArgs> {
19
+ command: string;
20
+ aliases: string;
21
+ describe: string;
22
+ run({ global }: Options<AnalyticsCommandArgs>): Promise<void>;
23
+ }
24
+ export declare class AnalyticsEnableModule extends AnalyticsSettingModule implements CommandModuleImplementation<AnalyticsCommandArgs> {
25
+ command: string;
26
+ aliases: string;
27
+ describe: string;
28
+ run({ global }: Options<AnalyticsCommandArgs>): Promise<void>;
29
+ }
30
+ export declare class AnalyticsPromptModule extends AnalyticsSettingModule implements CommandModuleImplementation<AnalyticsCommandArgs> {
31
+ command: string;
32
+ describe: string;
33
+ run({ global }: Options<AnalyticsCommandArgs>): Promise<void>;
34
+ }
35
+ export {};
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.AnalyticsPromptModule = exports.AnalyticsEnableModule = exports.AnalyticsDisableModule = void 0;
11
+ const analytics_1 = require("../../../analytics/analytics");
12
+ const command_module_1 = require("../../../command-builder/command-module");
13
+ class AnalyticsSettingModule extends command_module_1.CommandModule {
14
+ builder(localYargs) {
15
+ return localYargs
16
+ .option('global', {
17
+ description: `Configure analytics gathering and reporting globally in the caller's home directory.`,
18
+ alias: ['g'],
19
+ type: 'boolean',
20
+ default: false,
21
+ })
22
+ .strict();
23
+ }
24
+ }
25
+ class AnalyticsDisableModule extends AnalyticsSettingModule {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.command = 'disable';
29
+ this.aliases = 'off';
30
+ this.describe = 'Disables analytics gathering and reporting for the user.';
31
+ }
32
+ async run({ global }) {
33
+ (0, analytics_1.setAnalyticsConfig)(global, false);
34
+ process.stderr.write(await (0, analytics_1.getAnalyticsInfoString)());
35
+ }
36
+ }
37
+ exports.AnalyticsDisableModule = AnalyticsDisableModule;
38
+ class AnalyticsEnableModule extends AnalyticsSettingModule {
39
+ constructor() {
40
+ super(...arguments);
41
+ this.command = 'enable';
42
+ this.aliases = 'on';
43
+ this.describe = 'Enables analytics gathering and reporting for the user.';
44
+ }
45
+ async run({ global }) {
46
+ (0, analytics_1.setAnalyticsConfig)(global, true);
47
+ process.stderr.write(await (0, analytics_1.getAnalyticsInfoString)());
48
+ }
49
+ }
50
+ exports.AnalyticsEnableModule = AnalyticsEnableModule;
51
+ class AnalyticsPromptModule extends AnalyticsSettingModule {
52
+ constructor() {
53
+ super(...arguments);
54
+ this.command = 'prompt';
55
+ this.describe = 'Prompts the user to set the analytics gathering status interactively.';
56
+ }
57
+ async run({ global }) {
58
+ await (0, analytics_1.promptAnalytics)(global, true);
59
+ }
60
+ }
61
+ exports.AnalyticsPromptModule = AnalyticsPromptModule;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { ArchitectCommandModule } from '../../command-builder/architect-command-module';
9
+ import { CommandModuleImplementation } from '../../command-builder/command-module';
10
+ export declare class BuildCommandModule extends ArchitectCommandModule implements CommandModuleImplementation {
11
+ multiTarget: boolean;
12
+ command: string;
13
+ aliases: string[];
14
+ describe: string;
15
+ longDescriptionPath: string;
16
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.BuildCommandModule = void 0;
11
+ const path_1 = require("path");
12
+ const architect_command_module_1 = require("../../command-builder/architect-command-module");
13
+ class BuildCommandModule extends architect_command_module_1.ArchitectCommandModule {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.multiTarget = false;
17
+ this.command = 'build [project]';
18
+ this.aliases = ['b'];
19
+ this.describe = 'Compiles an Angular application or library into an output directory named dist/ at the given output path.';
20
+ this.longDescriptionPath = (0, path_1.join)(__dirname, 'long-description.md');
21
+ }
22
+ }
23
+ exports.BuildCommandModule = BuildCommandModule;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Argv } from 'yargs';
9
+ import { CommandModule, CommandModuleImplementation, CommandScope } from '../../../command-builder/command-module';
10
+ export declare class CacheCleanModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ describe: string;
13
+ longDescriptionPath: string | undefined;
14
+ static scope: CommandScope.In;
15
+ builder(localYargs: Argv): Argv;
16
+ run(): Promise<void>;
17
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CacheCleanModule = void 0;
11
+ const fs_1 = require("fs");
12
+ const command_module_1 = require("../../../command-builder/command-module");
13
+ const utilities_1 = require("../utilities");
14
+ class CacheCleanModule extends command_module_1.CommandModule {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.command = 'clean';
18
+ this.describe = 'Deletes persistent disk cache from disk.';
19
+ }
20
+ builder(localYargs) {
21
+ return localYargs.strict();
22
+ }
23
+ run() {
24
+ const { path } = (0, utilities_1.getCacheConfig)(this.context.workspace);
25
+ return fs_1.promises.rm(path, {
26
+ force: true,
27
+ recursive: true,
28
+ maxRetries: 3,
29
+ });
30
+ }
31
+ }
32
+ exports.CacheCleanModule = CacheCleanModule;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Argv } from 'yargs';
9
+ import { CommandModule, CommandModuleImplementation, CommandScope, Options } from '../../command-builder/command-module';
10
+ export declare class CacheCommandModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ describe: string;
13
+ longDescriptionPath: string;
14
+ static scope: CommandScope.In;
15
+ builder(localYargs: Argv): Argv;
16
+ run(_options: Options<{}>): void;
17
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CacheCommandModule = void 0;
11
+ const path_1 = require("path");
12
+ const command_module_1 = require("../../command-builder/command-module");
13
+ const command_1 = require("../../command-builder/utilities/command");
14
+ const cli_1 = require("./clean/cli");
15
+ const cli_2 = require("./info/cli");
16
+ const cli_3 = require("./settings/cli");
17
+ class CacheCommandModule extends command_module_1.CommandModule {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.command = 'cache';
21
+ this.describe = 'Configure persistent disk cache and retrieve cache statistics.';
22
+ this.longDescriptionPath = (0, path_1.join)(__dirname, 'long-description.md');
23
+ }
24
+ builder(localYargs) {
25
+ const subcommands = [
26
+ cli_3.CacheEnableModule,
27
+ cli_3.CacheDisableModule,
28
+ cli_1.CacheCleanModule,
29
+ cli_2.CacheInfoCommandModule,
30
+ ].sort();
31
+ for (const module of subcommands) {
32
+ localYargs = (0, command_1.addCommandModuleToYargs)(localYargs, module, this.context);
33
+ }
34
+ return localYargs.demandCommand(1, command_1.demandCommandFailureMessage).strict();
35
+ }
36
+ run(_options) { }
37
+ }
38
+ exports.CacheCommandModule = CacheCommandModule;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Argv } from 'yargs';
9
+ import { CommandModule, CommandModuleImplementation, CommandScope } from '../../../command-builder/command-module';
10
+ export declare class CacheInfoCommandModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ describe: string;
13
+ longDescriptionPath?: string | undefined;
14
+ static scope: CommandScope.In;
15
+ builder(localYargs: Argv): Argv;
16
+ run(): Promise<void>;
17
+ private getSizeOfDirectory;
18
+ private formatSize;
19
+ private effectiveEnabledStatus;
20
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CacheInfoCommandModule = void 0;
11
+ const core_1 = require("@angular-devkit/core");
12
+ const fs_1 = require("fs");
13
+ const path_1 = require("path");
14
+ const command_module_1 = require("../../../command-builder/command-module");
15
+ const environment_options_1 = require("../../../utilities/environment-options");
16
+ const utilities_1 = require("../utilities");
17
+ class CacheInfoCommandModule extends command_module_1.CommandModule {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.command = 'info';
21
+ this.describe = 'Prints persistent disk cache configuration and statistics in the console.';
22
+ }
23
+ builder(localYargs) {
24
+ return localYargs.strict();
25
+ }
26
+ async run() {
27
+ const { path, environment, enabled } = (0, utilities_1.getCacheConfig)(this.context.workspace);
28
+ this.context.logger.info(core_1.tags.stripIndents `
29
+ Enabled: ${enabled ? 'yes' : 'no'}
30
+ Environment: ${environment}
31
+ Path: ${path}
32
+ Size on disk: ${await this.getSizeOfDirectory(path)}
33
+ Effective status on current machine: ${this.effectiveEnabledStatus() ? 'enabled' : 'disabled'}
34
+ `);
35
+ }
36
+ async getSizeOfDirectory(path) {
37
+ const directoriesStack = [path];
38
+ let size = 0;
39
+ while (directoriesStack.length) {
40
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
41
+ const dirPath = directoriesStack.pop();
42
+ let entries = [];
43
+ try {
44
+ entries = await fs_1.promises.readdir(dirPath);
45
+ }
46
+ catch { }
47
+ for (const entry of entries) {
48
+ const entryPath = (0, path_1.join)(dirPath, entry);
49
+ const stats = await fs_1.promises.stat(entryPath);
50
+ if (stats.isDirectory()) {
51
+ directoriesStack.push(entryPath);
52
+ }
53
+ size += stats.size;
54
+ }
55
+ }
56
+ return this.formatSize(size);
57
+ }
58
+ formatSize(size) {
59
+ if (size <= 0) {
60
+ return '0 bytes';
61
+ }
62
+ const abbreviations = ['bytes', 'kB', 'MB', 'GB'];
63
+ const index = Math.floor(Math.log(size) / Math.log(1024));
64
+ const roundedSize = size / Math.pow(1024, index);
65
+ // bytes don't have a fraction
66
+ const fractionDigits = index === 0 ? 0 : 2;
67
+ return `${roundedSize.toFixed(fractionDigits)} ${abbreviations[index]}`;
68
+ }
69
+ effectiveEnabledStatus() {
70
+ const { enabled, environment } = (0, utilities_1.getCacheConfig)(this.context.workspace);
71
+ if (enabled) {
72
+ switch (environment) {
73
+ case 'ci':
74
+ return environment_options_1.isCI;
75
+ case 'local':
76
+ return !environment_options_1.isCI;
77
+ }
78
+ }
79
+ return enabled;
80
+ }
81
+ }
82
+ exports.CacheInfoCommandModule = CacheInfoCommandModule;
@@ -0,0 +1,53 @@
1
+ Angular CLI saves a number of cachable operations on disk by default.
2
+
3
+ When you re-run the same build, the build system restores the state of the previous build and re-uses previously performed operations, which decreases the time taken to build and test your applications and libraries.
4
+
5
+ To amend the default cache settings, add the `cli.cache` object to your [Workspace Configuration](guide/workspace-config).
6
+ The object goes under `cli.cache` at the top level of the file, outside the `projects` sections.
7
+
8
+ ```jsonc
9
+ {
10
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
11
+ "version": 1,
12
+ "cli": {
13
+ "cache": {
14
+ // ...
15
+ }
16
+ },
17
+ "projects": {}
18
+ }
19
+ ```
20
+
21
+ For more information, see [cache options](guide/workspace-config#cache-options).
22
+
23
+ ### Cache environments
24
+
25
+ By default, disk cache is only enabled for local environments. The value of environment can be one of the following:
26
+
27
+ - `all` - allows disk cache on all machines.
28
+ - `local` - allows disk cache only on development machines.
29
+ - `ci` - allows disk cache only on continuous integration (Ci) systems.
30
+
31
+ To change the environment setting to `all`, run the following command:
32
+
33
+ ```bash
34
+ ng config cli.cache.environment all
35
+ ```
36
+
37
+ For more information, see `environment` in [cache options](guide/workspace-config#cache-options).
38
+
39
+ <div class="alert is-helpful">
40
+
41
+ The Angular CLI checks for the presence and value of the `CI` environment variable to determine in which environment it is running.
42
+
43
+ </div>
44
+
45
+ ### Cache path
46
+
47
+ By default, `.angular/cache` is used as a base directory to store cache results.
48
+
49
+ To change this path to `.cache/ng`, run the following command:
50
+
51
+ ```bash
52
+ ng config cli.cache.path ".cache/ng"
53
+ ```
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Argv } from 'yargs';
9
+ import { CommandModule, CommandModuleImplementation, CommandScope } from '../../../command-builder/command-module';
10
+ export declare class CacheDisableModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ aliases: string;
13
+ describe: string;
14
+ longDescriptionPath: string | undefined;
15
+ static scope: CommandScope.In;
16
+ builder(localYargs: Argv): Argv;
17
+ run(): void;
18
+ }
19
+ export declare class CacheEnableModule extends CommandModule implements CommandModuleImplementation {
20
+ command: string;
21
+ aliases: string;
22
+ describe: string;
23
+ longDescriptionPath: string | undefined;
24
+ static scope: CommandScope.In;
25
+ builder(localYargs: Argv): Argv;
26
+ run(): void;
27
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CacheEnableModule = exports.CacheDisableModule = void 0;
11
+ const command_module_1 = require("../../../command-builder/command-module");
12
+ const utilities_1 = require("../utilities");
13
+ class CacheDisableModule extends command_module_1.CommandModule {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.command = 'disable';
17
+ this.aliases = 'off';
18
+ this.describe = 'Disables persistent disk cache for all projects in the workspace.';
19
+ }
20
+ builder(localYargs) {
21
+ return localYargs;
22
+ }
23
+ run() {
24
+ (0, utilities_1.updateCacheConfig)('enabled', false);
25
+ }
26
+ }
27
+ exports.CacheDisableModule = CacheDisableModule;
28
+ class CacheEnableModule extends command_module_1.CommandModule {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.command = 'enable';
32
+ this.aliases = 'on';
33
+ this.describe = 'Enables disk cache for all projects in the workspace.';
34
+ }
35
+ builder(localYargs) {
36
+ return localYargs;
37
+ }
38
+ run() {
39
+ (0, utilities_1.updateCacheConfig)('enabled', true);
40
+ }
41
+ }
42
+ exports.CacheEnableModule = CacheEnableModule;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Cache } from '../../../lib/config/workspace-schema';
9
+ import { AngularWorkspace } from '../../utilities/config';
10
+ export declare function updateCacheConfig<K extends keyof Cache>(key: K, value: Cache[K]): void;
11
+ export declare function getCacheConfig(workspace: AngularWorkspace | undefined): Required<Cache>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getCacheConfig = exports.updateCacheConfig = void 0;
11
+ const core_1 = require("@angular-devkit/core");
12
+ const path_1 = require("path");
13
+ const workspace_schema_1 = require("../../../lib/config/workspace-schema");
14
+ const config_1 = require("../../utilities/config");
15
+ function updateCacheConfig(key, value) {
16
+ const [localWorkspace] = (0, config_1.getWorkspaceRaw)('local');
17
+ if (!localWorkspace) {
18
+ throw new Error('Cannot find workspace configuration file.');
19
+ }
20
+ localWorkspace.modify(['cli', 'cache', key], value);
21
+ localWorkspace.save();
22
+ }
23
+ exports.updateCacheConfig = updateCacheConfig;
24
+ function getCacheConfig(workspace) {
25
+ if (!workspace) {
26
+ throw new Error(`Cannot retrieve cache configuration as workspace is not defined.`);
27
+ }
28
+ const defaultSettings = {
29
+ path: (0, path_1.resolve)(workspace.basePath, '.angular/cache'),
30
+ environment: workspace_schema_1.Environment.Local,
31
+ enabled: true,
32
+ };
33
+ const cliSetting = workspace.extensions['cli'];
34
+ if (!cliSetting || !(0, core_1.isJsonObject)(cliSetting)) {
35
+ return defaultSettings;
36
+ }
37
+ const cacheSettings = cliSetting['cache'];
38
+ if (!(0, core_1.isJsonObject)(cacheSettings)) {
39
+ return defaultSettings;
40
+ }
41
+ const { path = defaultSettings.path, environment = defaultSettings.environment, enabled = defaultSettings.enabled,
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ } = cacheSettings;
44
+ return {
45
+ path: (0, path_1.resolve)(workspace.basePath, path),
46
+ environment,
47
+ enabled,
48
+ };
49
+ }
50
+ exports.getCacheConfig = getCacheConfig;