From 6c82db6a5a0da996a8878596c5c6504cbfad7fc5 Mon Sep 17 00:00:00 2001 From: Chen Wei Date: Thu, 5 Jan 2017 23:23:50 +0800 Subject: [PATCH] feat(config): add webpackTarget support via angular-cli.json Use webpackTarget to specify the target property of webpack config. --- .gitignore | 3 +++ packages/angular-cli/lib/config/schema.d.ts | 16 +++++++++++++--- packages/angular-cli/lib/config/schema.json | 4 ++++ .../angular-cli/models/webpack-build-common.ts | 3 ++- packages/angular-cli/models/webpack-config.ts | 4 +++- .../angular-cli/tasks/build-webpack-watch.ts | 4 +++- packages/angular-cli/tasks/build-webpack.ts | 4 +++- 7 files changed, 31 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index e4fc30216708..0f1a39a384ad 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ tmp/ # Mac OSX Finder files. **/.DS_Store .DS_Store + +# vim +*.swp diff --git a/packages/angular-cli/lib/config/schema.d.ts b/packages/angular-cli/lib/config/schema.d.ts index d323223b5f36..bb7a4942fcc9 100644 --- a/packages/angular-cli/lib/config/schema.d.ts +++ b/packages/angular-cli/lib/config/schema.d.ts @@ -12,7 +12,7 @@ export interface CliConfig { apps?: { root?: string; outDir?: string; - assets?: string; + assets?: string | string[]; deployUrl?: string; index?: string; main?: string; @@ -23,17 +23,27 @@ export interface CliConfig { /** * Global styles to be included in the build. */ - styles?: string[]; + styles?: (string | { + [name: string]: any; + input?: string; + })[]; /** * Global scripts to be included in the build. */ - scripts?: string[]; + scripts?: (string | { + [name: string]: any; + input?: string; + })[]; /** * Name and corresponding file for environment config. */ environments?: { [name: string]: any; }; + /** + * To specify the target property of webpack config. + */ + webpackTarget?: string; }[]; /** * Configuration reserved for installed third party addons. diff --git a/packages/angular-cli/lib/config/schema.json b/packages/angular-cli/lib/config/schema.json index 3a2a1f02fcc9..a66482a7ad4f 100644 --- a/packages/angular-cli/lib/config/schema.json +++ b/packages/angular-cli/lib/config/schema.json @@ -114,6 +114,10 @@ "description": "Name and corresponding file for environment config.", "type": "object", "additionalProperties": true + }, + "webpackTarget": { + "description": "To specify the target property of webpack config.", + "type": "string" } }, "additionalProperties": false diff --git a/packages/angular-cli/models/webpack-build-common.ts b/packages/angular-cli/models/webpack-build-common.ts index 6130f887fbc0..40c6ffb94c86 100644 --- a/packages/angular-cli/models/webpack-build-common.ts +++ b/packages/angular-cli/models/webpack-build-common.ts @@ -195,6 +195,7 @@ export function getWebpackCommonConfig( module: false, clearImmediate: false, setImmediate: false - } + }, + target: appConfig.webpackTarget }; } diff --git a/packages/angular-cli/models/webpack-config.ts b/packages/angular-cli/models/webpack-config.ts index 61878c3d0bcf..7f6c6838d438 100644 --- a/packages/angular-cli/models/webpack-config.ts +++ b/packages/angular-cli/models/webpack-config.ts @@ -32,13 +32,15 @@ export class NgCliWebpackConfig { vendorChunk = false, verbose = false, progress = true, - deployUrl?: string + deployUrl?: string, + webpackTarget?: string ) { const config: CliConfig = CliConfig.fromProject(); const appConfig = config.config.apps[0]; appConfig.outDir = outputDir || appConfig.outDir; appConfig.deployUrl = deployUrl || appConfig.deployUrl; + appConfig.webpackTarget = webpackTarget || appConfig.webpackTarget; let baseConfig = getWebpackCommonConfig( this.ngCliProject.root, diff --git a/packages/angular-cli/tasks/build-webpack-watch.ts b/packages/angular-cli/tasks/build-webpack-watch.ts index 1681ae3add6a..554e473bd08e 100644 --- a/packages/angular-cli/tasks/build-webpack-watch.ts +++ b/packages/angular-cli/tasks/build-webpack-watch.ts @@ -17,6 +17,7 @@ export default Task.extend({ const outputDir = runTaskOptions.outputPath || CliConfig.fromProject().config.apps[0].outDir; const deployUrl = runTaskOptions.deployUrl || CliConfig.fromProject().config.apps[0].deployUrl; + const webpackTarget = CliConfig.fromProject().config.apps[0].webpackTarget; rimraf.sync(path.resolve(project.root, outputDir)); const config = new NgCliWebpackConfig( @@ -33,7 +34,8 @@ export default Task.extend({ runTaskOptions.vendorChunk, runTaskOptions.verbose, runTaskOptions.progress, - deployUrl + deployUrl, + webpackTarget ).config; const webpackCompiler: any = webpack(config); diff --git a/packages/angular-cli/tasks/build-webpack.ts b/packages/angular-cli/tasks/build-webpack.ts index 0fce473ef348..6a7357c74118 100644 --- a/packages/angular-cli/tasks/build-webpack.ts +++ b/packages/angular-cli/tasks/build-webpack.ts @@ -19,6 +19,7 @@ export default Task.extend({ const outputDir = runTaskOptions.outputPath || CliConfig.fromProject().config.apps[0].outDir; const deployUrl = runTaskOptions.deployUrl || CliConfig.fromProject().config.apps[0].deployUrl; + const webpackTarget = CliConfig.fromProject().config.apps[0].webpackTarget; rimraf.sync(path.resolve(project.root, outputDir)); const config = new NgCliWebpackConfig( project, @@ -34,7 +35,8 @@ export default Task.extend({ runTaskOptions.vendorChunk, runTaskOptions.verbose, runTaskOptions.progress, - deployUrl + deployUrl, + webpackTarget ).config; const webpackCompiler: any = webpack(config);