UNPKG

3.71 kBJavaScriptView Raw
1"use strict";
2var webpackMerge = require('webpack-merge');
3var config_1 = require('./config');
4var webpack_configs_1 = require('./webpack-configs');
5var path = require('path');
6var NgCliWebpackConfig = (function () {
7 function NgCliWebpackConfig(buildOptions) {
8 this.validateBuildOptions(buildOptions);
9 var configPath = config_1.CliConfig.configFilePath();
10 var projectRoot = path.dirname(configPath);
11 var appConfig = config_1.CliConfig.fromProject().config.apps[0];
12 appConfig = this.addAppConfigDefaults(appConfig);
13 buildOptions = this.addTargetDefaults(buildOptions);
14 buildOptions = this.mergeConfigs(buildOptions, appConfig);
15 var wco = { projectRoot: projectRoot, buildOptions: buildOptions, appConfig: appConfig };
16 var webpackConfigs = [
17 webpack_configs_1.getCommonConfig(wco),
18 webpack_configs_1.getStylesConfig(wco),
19 this.getTargetConfig(wco)
20 ];
21 if (appConfig.main || appConfig.polyfills) {
22 var typescriptConfigPartial = buildOptions.aot
23 ? webpack_configs_1.getAotConfig(wco)
24 : webpack_configs_1.getNonAotConfig(wco);
25 webpackConfigs.push(typescriptConfigPartial);
26 }
27 // add style config
28 this.config = webpackMerge(webpackConfigs);
29 }
30 NgCliWebpackConfig.prototype.getTargetConfig = function (webpackConfigOptions) {
31 switch (webpackConfigOptions.buildOptions.target) {
32 case 'development':
33 return webpack_configs_1.getDevConfig(webpackConfigOptions);
34 case 'production':
35 return webpack_configs_1.getProdConfig(webpackConfigOptions);
36 }
37 };
38 // Validate build options
39 NgCliWebpackConfig.prototype.validateBuildOptions = function (buildOptions) {
40 if (buildOptions.target !== 'development' && buildOptions.target !== 'production') {
41 throw new Error("Invalid build target. Only 'development' and 'production' are available.");
42 }
43 };
44 // Fill in defaults for build targets
45 NgCliWebpackConfig.prototype.addTargetDefaults = function (buildOptions) {
46 var targetDefaults = {
47 development: {
48 environment: 'dev',
49 outputHashing: 'none',
50 sourcemap: true,
51 extractCss: false
52 },
53 production: {
54 environment: 'prod',
55 outputHashing: 'all',
56 sourcemap: false,
57 extractCss: true,
58 aot: true
59 }
60 };
61 return Object.assign({}, targetDefaults[buildOptions.target], buildOptions);
62 };
63 // Fill in defaults from angular-cli.json
64 NgCliWebpackConfig.prototype.mergeConfigs = function (buildOptions, appConfig) {
65 var mergeableOptions = {
66 outputPath: appConfig.outDir,
67 deployUrl: appConfig.deployUrl
68 };
69 return Object.assign({}, mergeableOptions, buildOptions);
70 };
71 NgCliWebpackConfig.prototype.addAppConfigDefaults = function (appConfig) {
72 var appConfigDefaults = {
73 scripts: [],
74 styles: []
75 };
76 // can't use Object.assign here because appConfig has a lot of getters/setters
77 for (var _i = 0, _a = Object.keys(appConfigDefaults); _i < _a.length; _i++) {
78 var key = _a[_i];
79 appConfig[key] = appConfig[key] || appConfigDefaults[key];
80 }
81 return appConfig;
82 };
83 return NgCliWebpackConfig;
84}());
85exports.NgCliWebpackConfig = NgCliWebpackConfig;
86//# sourceMappingURL=/Users/hansl/Sources/angular-cli/packages/@angular/cli/models/webpack-config.js.map
\No newline at end of file