Skip to content

Commit 10cce2c

Browse files
committed
refactor(@angular/cli): re-organize the Angular CLI package folder structure
1 parent 78683db commit 10cce2c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+187
-199
lines changed

‎packages/angular/cli/bin/postinstall/analytics-prompt.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ if ('NG_CLI_ANALYTICS' in process.env) {
1414
}
1515

1616
try {
17-
var analytics = require('../../models/analytics');
17+
var analytics = require('../../src/analytics/analytics');
1818

1919
analytics
2020
.hasGlobalAnalyticsConfiguration()

‎packages/angular/cli/lib/cli/index.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99
import { schema } from '@angular-devkit/core';
1010
import { createConsoleLogger } from '@angular-devkit/core/node';
1111
import { format } from 'util';
12-
import { colors, removeColor } from '../../utilities/color';
13-
import { CommandModuleError } from '../../utilities/command-builder/command-module';
14-
import { AngularWorkspace, getWorkspaceRaw } from '../../utilities/config';
15-
import { writeErrorToLogFile } from '../../utilities/log-file';
16-
import { findWorkspaceFile } from '../../utilities/project';
17-
import { runCommand } from './command-runner';
12+
import { CommandModuleError } from '../../src/command-builder/command-module';
13+
import { runCommand } from '../../src/command-builder/command-runner';
14+
import { colors, removeColor } from '../../src/utilities/color';
15+
import { AngularWorkspace, getWorkspaceRaw } from '../../src/utilities/config';
16+
import { writeErrorToLogFile } from '../../src/utilities/log-file';
17+
import { findWorkspaceFile } from '../../src/utilities/project';
1818

19-
export { VERSION } from '../../utilities/version';
19+
export { VERSION } from '../../src/utilities/version';
2020

2121
const debugEnv = process.env['NG_DEBUG'];
2222
const isDebug = debugEnv !== undefined && debugEnv !== '0' && debugEnv.toLowerCase() !== 'false';

‎packages/angular/cli/lib/init.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import 'symbol-observable';
1111
import { promises as fs } from 'fs';
1212
import * as path from 'path';
1313
import { SemVer } from 'semver';
14-
import { colors } from '../utilities/color';
15-
import { isWarningEnabled } from '../utilities/config';
16-
import { VERSION } from '../utilities/version';
14+
import { colors } from '../src/utilities/color';
15+
import { isWarningEnabled } from '../src/utilities/config';
16+
import { VERSION } from '../src/utilities/version';
1717

1818
(async () => {
1919
/**

‎packages/angular/cli/models/command.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
*/
88

99
import { analytics, logging } from '@angular-devkit/core';
10-
import { Option } from '../utilities/command-builder/json-schema';
11-
import { AngularWorkspace } from '../utilities/config';
10+
import { Option } from '../src/command-builder/utilities/json-schema';
11+
import { AngularWorkspace } from '../src/utilities/config';
1212
import { CommandContext } from './interface';
1313

1414
export interface BaseCommandOptions {

‎packages/angular/cli/models/interface.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88

99
import { analytics, logging } from '@angular-devkit/core';
10-
import { AngularWorkspace } from '../utilities/config';
10+
import { AngularWorkspace } from '../src/utilities/config';
1111

1212
/**
1313
* A command runner context.

‎packages/angular/cli/models/schematic-command.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ import {
1616
} from '@angular-devkit/schematics/tools';
1717
import * as inquirer from 'inquirer';
1818
import * as systemPath from 'path';
19-
import { colors } from '../utilities/color';
20-
import { parseJsonSchemaToOptions } from '../utilities/command-builder/json-schema';
21-
import { getProjectByCwd, getSchematicDefaults, getWorkspace } from '../utilities/config';
22-
import { ensureCompatibleNpm, getPackageManager } from '../utilities/package-manager';
23-
import { isTTY } from '../utilities/tty';
24-
import { isPackageNameSafeForAnalytics } from './analytics';
19+
import { isPackageNameSafeForAnalytics } from '../src/analytics/analytics';
20+
import { parseJsonSchemaToOptions } from '../src/command-builder/utilities/json-schema';
21+
import { colors } from '../src/utilities/color';
22+
import { getProjectByCwd, getSchematicDefaults, getWorkspace } from '../src/utilities/config';
23+
import { ensureCompatibleNpm, getPackageManager } from '../src/utilities/package-manager';
24+
import { isTTY } from '../src/utilities/tty';
2525
import { BaseCommandOptions, Command } from './command';
2626
import { CommandContext } from './interface';
2727
import { SchematicEngineHost } from './schematic-engine-host';

‎packages/angular/cli/utilities/command-builder/architect-command-module.ts renamed to ‎packages/angular/cli/src/command-builder/architect-command-module.ts

+2-66
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,17 @@
99
import { Architect, Target } from '@angular-devkit/architect';
1010
import { WorkspaceNodeModulesArchitectHost } from '@angular-devkit/architect/node';
1111
import { json } from '@angular-devkit/core';
12-
import { existsSync } from 'fs';
13-
import { resolve } from 'path';
1412
import { Argv } from 'yargs';
15-
import { isPackageNameSafeForAnalytics } from '../../models/analytics';
16-
import { getPackageManager } from '../package-manager';
13+
import { isPackageNameSafeForAnalytics } from '../analytics/analytics';
1714
import {
18-
CommandContext,
1915
CommandModule,
2016
CommandModuleError,
2117
CommandModuleImplementation,
2218
CommandScope,
2319
Options,
2420
OtherOptions,
2521
} from './command-module';
26-
import { Option, parseJsonSchemaToOptions } from './json-schema';
22+
import { getArchitectTargetOptions } from './utilities/architect';
2723

2824
export interface ArchitectCommandArgs {
2925
configuration?: string;
@@ -234,63 +230,3 @@ export abstract class ArchitectCommandModule
234230
));
235231
}
236232
}
237-
238-
/**
239-
* Get architect target schema options.
240-
*/
241-
export async function getArchitectTargetOptions(
242-
context: CommandContext,
243-
target: Target,
244-
): Promise<Option[]> {
245-
const { workspace } = context;
246-
if (!workspace) {
247-
return [];
248-
}
249-
250-
const architectHost = new WorkspaceNodeModulesArchitectHost(workspace, workspace.basePath);
251-
const builderConf = await architectHost.getBuilderNameForTarget(target);
252-
253-
let builderDesc;
254-
try {
255-
builderDesc = await architectHost.resolveBuilder(builderConf);
256-
} catch (e) {
257-
if (e.code === 'MODULE_NOT_FOUND') {
258-
await warnOnMissingNodeModules(context);
259-
throw new CommandModuleError(`Could not find the '${builderConf}' builder's node package.`);
260-
}
261-
262-
throw e;
263-
}
264-
265-
return parseJsonSchemaToOptions(
266-
new json.schema.CoreSchemaRegistry(),
267-
builderDesc.optionSchema as json.JsonObject,
268-
true,
269-
);
270-
}
271-
272-
export async function warnOnMissingNodeModules(context: CommandContext): Promise<void> {
273-
const basePath = context.workspace?.basePath;
274-
if (!basePath) {
275-
return;
276-
}
277-
278-
// Check for a `node_modules` directory (npm, yarn non-PnP, etc.)
279-
if (existsSync(resolve(basePath, 'node_modules'))) {
280-
return;
281-
}
282-
283-
// Check for yarn PnP files
284-
if (
285-
existsSync(resolve(basePath, '.pnp.js')) ||
286-
existsSync(resolve(basePath, '.pnp.cjs')) ||
287-
existsSync(resolve(basePath, '.pnp.mjs'))
288-
) {
289-
return;
290-
}
291-
292-
const packageManager = await getPackageManager(basePath);
293-
context.logger.warn(
294-
`Node packages may not be installed. Try installing with '${packageManager} install'.`,
295-
);
296-
}

‎packages/angular/cli/utilities/command-builder/command-module.ts renamed to ‎packages/angular/cli/src/command-builder/command-module.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import {
1616
CommandModule as YargsCommandModule,
1717
Options as YargsOptions,
1818
} from 'yargs';
19-
import { createAnalytics } from '../../models/analytics';
20-
import { AngularWorkspace } from '../config';
21-
import { Option } from './json-schema';
19+
import { createAnalytics } from '../analytics/analytics';
20+
import { AngularWorkspace } from '../utilities/config';
21+
import { Option } from './utilities/json-schema';
2222

2323
export type Options<T> = { [key in keyof T as CamelCaseKey<key>]: T[key] };
2424

‎packages/angular/cli/lib/cli/command-runner.ts renamed to ‎packages/angular/cli/src/command-builder/command-runner.ts

+21-25
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,27 @@
99
import { logging } from '@angular-devkit/core';
1010
import yargs from 'yargs';
1111
import { Parser } from 'yargs/helpers';
12-
import { AddCommandModule } from '../../commands/add/cli';
13-
import { AnalyticsCommandModule } from '../../commands/analytics/cli';
14-
import { BuildCommandModule } from '../../commands/build/cli';
15-
import { ConfigCommandModule } from '../../commands/config/cli';
16-
import { DeployCommandModule } from '../../commands/deploy/cli';
17-
import { DocCommandModule } from '../../commands/doc/cli';
18-
import { E2eCommandModule } from '../../commands/e2e/cli';
19-
import { ExtractI18nCommandModule } from '../../commands/extract-i18n/cli';
20-
import { GenerateCommandModule } from '../../commands/generate/cli';
21-
import { LintCommandModule } from '../../commands/lint/cli';
22-
import { AwesomeCommandModule } from '../../commands/make-this-awesome/cli';
23-
import { NewCommandModule } from '../../commands/new/cli';
24-
import { RunCommandModule } from '../../commands/run/cli';
25-
import { ServeCommandModule } from '../../commands/serve/cli';
26-
import { TestCommandModule } from '../../commands/test/cli';
27-
import { UpdateCommandModule } from '../../commands/update/cli';
28-
import { VersionCommandModule } from '../../commands/version/cli';
29-
import { colors } from '../../utilities/color';
30-
import {
31-
CommandContext,
32-
CommandModuleError,
33-
CommandScope,
34-
} from '../../utilities/command-builder/command-module';
35-
import { jsonHelpUsage } from '../../utilities/command-builder/json-help';
36-
import { AngularWorkspace } from '../../utilities/config';
12+
import { AddCommandModule } from '../commands/add/cli';
13+
import { AnalyticsCommandModule } from '../commands/analytics/cli';
14+
import { BuildCommandModule } from '../commands/build/cli';
15+
import { ConfigCommandModule } from '../commands/config/cli';
16+
import { DeployCommandModule } from '../commands/deploy/cli';
17+
import { DocCommandModule } from '../commands/doc/cli';
18+
import { E2eCommandModule } from '../commands/e2e/cli';
19+
import { ExtractI18nCommandModule } from '../commands/extract-i18n/cli';
20+
import { GenerateCommandModule } from '../commands/generate/cli';
21+
import { LintCommandModule } from '../commands/lint/cli';
22+
import { AwesomeCommandModule } from '../commands/make-this-awesome/cli';
23+
import { NewCommandModule } from '../commands/new/cli';
24+
import { RunCommandModule } from '../commands/run/cli';
25+
import { ServeCommandModule } from '../commands/serve/cli';
26+
import { TestCommandModule } from '../commands/test/cli';
27+
import { UpdateCommandModule } from '../commands/update/cli';
28+
import { VersionCommandModule } from '../commands/version/cli';
29+
import { colors } from '../utilities/color';
30+
import { AngularWorkspace } from '../utilities/config';
31+
import { CommandContext, CommandModuleError, CommandScope } from './command-module';
32+
import { jsonHelpUsage } from './utilities/json-help';
3733

3834
const COMMANDS = [
3935
VersionCommandModule,

‎packages/angular/cli/utilities/command-builder/schematics-command-module.ts renamed to ‎packages/angular/cli/src/command-builder/schematics-command-module.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import {
1414
} from '@angular-devkit/schematics/tools';
1515
import { Argv } from 'yargs';
1616
import { SchematicEngineHost } from '../../models/schematic-engine-host';
17-
import { getProjectByCwd, getWorkspace } from '../config';
17+
import { getProjectByCwd, getWorkspace } from '../utilities/config';
1818
import { CommandModule, CommandModuleImplementation, CommandScope } from './command-module';
19-
import { Option, parseJsonSchemaToOptions } from './json-schema';
19+
import { Option, parseJsonSchemaToOptions } from './utilities/json-schema';
2020

2121
const DEFAULT_SCHEMATICS_COLLECTION = '@schematics/angular';
2222

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
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+
9+
import { Target } from '@angular-devkit/architect';
10+
import { WorkspaceNodeModulesArchitectHost } from '@angular-devkit/architect/node';
11+
import { json } from '@angular-devkit/core';
12+
import { existsSync } from 'fs';
13+
import { resolve } from 'path';
14+
import { getPackageManager } from '../../utilities/package-manager';
15+
import { CommandContext, CommandModuleError } from '../command-module';
16+
import { Option, parseJsonSchemaToOptions } from './json-schema';
17+
18+
export async function getArchitectTargetOptions(
19+
context: CommandContext,
20+
target: Target,
21+
): Promise<Option[]> {
22+
const { workspace } = context;
23+
if (!workspace) {
24+
return [];
25+
}
26+
27+
const architectHost = new WorkspaceNodeModulesArchitectHost(workspace, workspace.basePath);
28+
const builderConf = await architectHost.getBuilderNameForTarget(target);
29+
30+
let builderDesc;
31+
try {
32+
builderDesc = await architectHost.resolveBuilder(builderConf);
33+
} catch (e) {
34+
if (e.code === 'MODULE_NOT_FOUND') {
35+
await warnOnMissingNodeModules(context);
36+
throw new CommandModuleError(`Could not find the '${builderConf}' builder's node package.`);
37+
}
38+
39+
throw e;
40+
}
41+
42+
return parseJsonSchemaToOptions(
43+
new json.schema.CoreSchemaRegistry(),
44+
builderDesc.optionSchema as json.JsonObject,
45+
true,
46+
);
47+
}
48+
49+
export async function warnOnMissingNodeModules(context: CommandContext): Promise<void> {
50+
const basePath = context.workspace?.basePath;
51+
if (!basePath) {
52+
return;
53+
}
54+
55+
// Check for a `node_modules` directory (npm, yarn non-PnP, etc.)
56+
if (existsSync(resolve(basePath, 'node_modules'))) {
57+
return;
58+
}
59+
60+
// Check for yarn PnP files
61+
if (
62+
existsSync(resolve(basePath, '.pnp.js')) ||
63+
existsSync(resolve(basePath, '.pnp.cjs')) ||
64+
existsSync(resolve(basePath, '.pnp.mjs'))
65+
) {
66+
return;
67+
}
68+
69+
const packageManager = await getPackageManager(basePath);
70+
context.logger.warn(
71+
`Node packages may not be installed. Try installing with '${packageManager} install'.`,
72+
);
73+
}

‎packages/angular/cli/utilities/command-builder/json-help.ts renamed to ‎packages/angular/cli/src/command-builder/utilities/json-help.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88

99
import yargs from 'yargs';
10-
import { FullDescribe } from './command-module';
10+
import { FullDescribe } from '../command-module';
1111

1212
export interface JsonHelp {
1313
name: string;

‎packages/angular/cli/commands/add/add-impl.ts renamed to ‎packages/angular/cli/src/commands/add/add-impl.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ import { NodePackageDoesNotSupportSchematics } from '@angular-devkit/schematics/
1111
import npa from 'npm-package-arg';
1212
import { dirname, join } from 'path';
1313
import { intersects, prerelease, rcompare, satisfies, valid, validRange } from 'semver';
14-
import { PackageManager } from '../../lib/config/workspace-schema';
15-
import { isPackageNameSafeForAnalytics } from '../../models/analytics';
16-
import { SchematicCommand } from '../../models/schematic-command';
14+
import { PackageManager } from '../../../lib/config/workspace-schema';
15+
import { SchematicCommand } from '../../../models/schematic-command';
16+
import { isPackageNameSafeForAnalytics } from '../../analytics/analytics';
17+
import { Options } from '../../command-builder/command-module';
1718
import { colors } from '../../utilities/color';
18-
import { Options } from '../../utilities/command-builder/command-module';
1919
import { installPackage, installTempPackage } from '../../utilities/install-package';
2020
import { ensureCompatibleNpm, getPackageManager } from '../../utilities/package-manager';
2121
import {

‎packages/angular/cli/commands/add/cli.ts renamed to ‎packages/angular/cli/src/commands/add/cli.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ import {
1212
CommandModuleImplementation,
1313
Options,
1414
OtherOptions,
15-
} from '../../utilities/command-builder/command-module';
15+
} from '../../command-builder/command-module';
1616
import {
1717
SchematicsCommandArgs,
1818
SchematicsCommandModule,
19-
} from '../../utilities/command-builder/schematics-command-module';
19+
} from '../../command-builder/schematics-command-module';
2020
import { AddCommandModule as OldCommandModule } from './add-impl';
2121

2222
export interface AddCommandArgs extends SchematicsCommandArgs {

‎packages/angular/cli/commands/analytics/cli.ts renamed to ‎packages/angular/cli/src/commands/analytics/cli.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
*/
88

99
import { join } from 'path';
10-
import { Argv, string } from 'yargs';
10+
import { Argv } from 'yargs';
1111
import {
1212
promptGlobalAnalytics,
1313
promptProjectAnalytics,
1414
setAnalyticsConfig,
15-
} from '../../models/analytics';
16-
import { CommandModule, Options } from '../../utilities/command-builder/command-module';
15+
} from '../../analytics/analytics';
16+
import { CommandModule, Options } from '../../command-builder/command-module';
1717

1818
interface AnalyticsCommandArgs {
1919
'setting-or-project': 'on' | 'off' | 'ci' | 'project' | 'prompt' | string;

‎packages/angular/cli/commands/build/cli.ts renamed to ‎packages/angular/cli/src/commands/build/cli.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
*/
88

99
import { join } from 'path';
10-
import { ArchitectCommandModule } from '../../utilities/command-builder/architect-command-module';
11-
import { CommandModuleImplementation } from '../../utilities/command-builder/command-module';
10+
import { ArchitectCommandModule } from '../../command-builder/architect-command-module';
11+
import { CommandModuleImplementation } from '../../command-builder/command-module';
1212

1313
export class BuildCommandModule
1414
extends ArchitectCommandModule

‎packages/angular/cli/commands/config/cli.ts renamed to ‎packages/angular/cli/src/commands/config/cli.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
CommandModule,
1313
CommandModuleImplementation,
1414
Options,
15-
} from '../../utilities/command-builder/command-module';
15+
} from '../../command-builder/command-module';
1616
import { ConfigCommand } from './config-impl';
1717

1818
export interface ConfigCommandArgs {

0 commit comments

Comments
 (0)