diff --git a/packages/@angular/cli/models/webpack-config.ts b/packages/@angular/cli/models/webpack-config.ts index c6a78c74ddda..3e331571abb7 100644 --- a/packages/@angular/cli/models/webpack-config.ts +++ b/packages/@angular/cli/models/webpack-config.ts @@ -14,16 +14,16 @@ import { import * as path from 'path'; import { AngularCompilerPlugin } from '@ngtools/webpack'; -export interface WebpackConfigOptions { +export interface WebpackConfigOptions { projectRoot: string; - buildOptions: BuildOptions; + buildOptions: T; appConfig: any; } -export class NgCliWebpackConfig { +export class NgCliWebpackConfig { public config: any; - public wco: WebpackConfigOptions; - constructor(buildOptions: BuildOptions, appConfig: any) { + public wco: WebpackConfigOptions; + constructor(buildOptions: T, appConfig: any) { this.validateBuildOptions(buildOptions); @@ -59,7 +59,7 @@ export class NgCliWebpackConfig { return this.config; } - public getTargetConfig(webpackConfigOptions: WebpackConfigOptions): any { + public getTargetConfig(webpackConfigOptions: WebpackConfigOptions): any { switch (webpackConfigOptions.buildOptions.target) { case 'development': return getDevConfig(webpackConfigOptions); @@ -86,8 +86,8 @@ export class NgCliWebpackConfig { } // Fill in defaults for build targets - public addTargetDefaults(buildOptions: BuildOptions): BuildOptions { - const targetDefaults: { [target: string]: BuildOptions } = { + public addTargetDefaults(buildOptions: T): T { + const targetDefaults: { [target: string]: Partial } = { development: { environment: 'dev', outputHashing: 'media', @@ -110,8 +110,8 @@ export class NgCliWebpackConfig { } // Fill in defaults from .angular-cli.json - public mergeConfigs(buildOptions: BuildOptions, appConfig: any, projectRoot: string) { - const mergeableOptions = { + public mergeConfigs(buildOptions: T, appConfig: any, projectRoot: string): T { + const mergeableOptions: Partial = { outputPath: path.resolve(projectRoot, appConfig.outDir), deployUrl: appConfig.deployUrl, baseHref: appConfig.baseHref diff --git a/packages/@angular/cli/models/webpack-configs/development.ts b/packages/@angular/cli/models/webpack-configs/development.ts index dc1eb85a882e..5b2227cc51a6 100644 --- a/packages/@angular/cli/models/webpack-configs/development.ts +++ b/packages/@angular/cli/models/webpack-configs/development.ts @@ -2,8 +2,8 @@ import { NamedModulesPlugin } from 'webpack'; import { WebpackConfigOptions } from '../webpack-config'; -export const getDevConfig = function (_wco: WebpackConfigOptions) { +export function getDevConfig(_wco: WebpackConfigOptions) { return { plugins: [new NamedModulesPlugin()] }; -}; +} diff --git a/packages/@angular/cli/models/webpack-configs/production.ts b/packages/@angular/cli/models/webpack-configs/production.ts index 23ccfc360e24..c7e5917b331c 100644 --- a/packages/@angular/cli/models/webpack-configs/production.ts +++ b/packages/@angular/cli/models/webpack-configs/production.ts @@ -14,7 +14,7 @@ import { readTsconfig } from '../../utilities/read-tsconfig'; const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); -export const getProdConfig = function (wco: WebpackConfigOptions) { +export function getProdConfig(wco: WebpackConfigOptions) { const { projectRoot, buildOptions, appConfig } = wco; let extraPlugins: any[] = []; @@ -159,4 +159,4 @@ export const getProdConfig = function (wco: WebpackConfigOptions) { ...extraPlugins ] }; -}; +} diff --git a/packages/@angular/cli/models/webpack-configs/server.ts b/packages/@angular/cli/models/webpack-configs/server.ts index 262849877de2..c3e5fb465587 100644 --- a/packages/@angular/cli/models/webpack-configs/server.ts +++ b/packages/@angular/cli/models/webpack-configs/server.ts @@ -4,7 +4,7 @@ import { WebpackConfigOptions } from '../webpack-config'; * Returns a partial specific to creating a bundle for node * @param _wco Options which are include the build options and app config */ -export const getServerConfig = function (_wco: WebpackConfigOptions) { +export function getServerConfig(_wco: WebpackConfigOptions) { return { target: 'node', output: { @@ -35,4 +35,4 @@ export const getServerConfig = function (_wco: WebpackConfigOptions) { } ] }; -}; +} diff --git a/packages/@angular/cli/models/webpack-configs/test.ts b/packages/@angular/cli/models/webpack-configs/test.ts index 6405b8b8afad..73c54824bb11 100644 --- a/packages/@angular/cli/models/webpack-configs/test.ts +++ b/packages/@angular/cli/models/webpack-configs/test.ts @@ -4,6 +4,7 @@ import * as webpack from 'webpack'; import { CliConfig } from '../config'; import { WebpackTestOptions } from '../webpack-test-config'; +import { WebpackConfigOptions } from '../webpack-config'; /** @@ -15,16 +16,14 @@ import { WebpackTestOptions } from '../webpack-test-config'; */ -export function getTestConfig(testConfig: WebpackTestOptions) { +export function getTestConfig(wco: WebpackConfigOptions) { + const { projectRoot, buildOptions, appConfig } = wco; - const configPath = CliConfig.configFilePath(); - const projectRoot = path.dirname(configPath); - const appConfig = CliConfig.fromProject().config.apps[0]; const nodeModules = path.resolve(projectRoot, 'node_modules'); const extraRules: any[] = []; const extraPlugins: any[] = []; - if (testConfig.codeCoverage && CliConfig.fromProject()) { + if (buildOptions.codeCoverage && CliConfig.fromProject()) { const codeCoverageExclude = CliConfig.fromProject().get('test.codeCoverage.exclude'); let exclude: (string | RegExp)[] = [ /\.(e2e|spec)\.ts$/, @@ -49,7 +48,7 @@ export function getTestConfig(testConfig: WebpackTestOptions) { } return { - devtool: testConfig.sourcemaps ? 'inline-source-map' : 'eval', + devtool: buildOptions.sourcemaps ? 'inline-source-map' : 'eval', entry: { main: path.resolve(projectRoot, appConfig.root, appConfig.test) }, diff --git a/packages/@angular/cli/models/webpack-configs/typescript.ts b/packages/@angular/cli/models/webpack-configs/typescript.ts index 472df1139f11..c1c4ccee50cc 100644 --- a/packages/@angular/cli/models/webpack-configs/typescript.ts +++ b/packages/@angular/cli/models/webpack-configs/typescript.ts @@ -83,7 +83,7 @@ function _createAotPlugin(wco: WebpackConfigOptions, options: any) { } } -export const getNonAotConfig = function(wco: WebpackConfigOptions) { +export function getNonAotConfig(wco: WebpackConfigOptions) { const { appConfig, projectRoot } = wco; const tsConfigPath = path.resolve(projectRoot, appConfig.root, appConfig.tsconfig); @@ -91,9 +91,9 @@ export const getNonAotConfig = function(wco: WebpackConfigOptions) { module: { rules: [{ test: /\.ts$/, loader: webpackLoader }] }, plugins: [ _createAotPlugin(wco, { tsConfigPath, skipCodeGeneration: true }) ] }; -}; +} -export const getAotConfig = function(wco: WebpackConfigOptions) { +export function getAotConfig(wco: WebpackConfigOptions) { const { projectRoot, buildOptions, appConfig } = wco; const tsConfigPath = path.resolve(projectRoot, appConfig.root, appConfig.tsconfig); const testTsConfigPath = path.resolve(projectRoot, appConfig.root, appConfig.testTsconfig); @@ -119,9 +119,9 @@ export const getAotConfig = function(wco: WebpackConfigOptions) { module: { rules: [{ test: /\.ts$/, use: [...boLoader, webpackLoader] }] }, plugins: [ _createAotPlugin(wco, pluginOptions) ] }; -}; +} -export const getNonAotTestConfig = function(wco: WebpackConfigOptions) { +export function getNonAotTestConfig(wco: WebpackConfigOptions) { const { projectRoot, appConfig } = wco; const tsConfigPath = path.resolve(projectRoot, appConfig.root, appConfig.testTsconfig); const appTsConfigPath = path.resolve(projectRoot, appConfig.root, appConfig.tsconfig); @@ -137,4 +137,4 @@ export const getNonAotTestConfig = function(wco: WebpackConfigOptions) { module: { rules: [{ test: /\.ts$/, loader: webpackLoader }] }, plugins: [ _createAotPlugin(wco, pluginOptions) ] }; -}; +} diff --git a/packages/@angular/cli/models/webpack-test-config.ts b/packages/@angular/cli/models/webpack-test-config.ts index b9de83223662..4847293867e1 100644 --- a/packages/@angular/cli/models/webpack-test-config.ts +++ b/packages/@angular/cli/models/webpack-test-config.ts @@ -12,18 +12,18 @@ import { export interface WebpackTestOptions extends BuildOptions { codeCoverage?: boolean; } -export class WebpackTestConfig extends NgCliWebpackConfig { - constructor(private testOptions: WebpackTestOptions, appConfig: any) { +export class WebpackTestConfig extends NgCliWebpackConfig { + constructor(testOptions: WebpackTestOptions, appConfig: any) { super(testOptions, appConfig); } public buildConfig() { - let webpackConfigs = [ + const webpackConfigs = [ getCommonConfig(this.wco), getStylesConfig(this.wco), this.getTargetConfig(this.wco), getNonAotTestConfig(this.wco), - getTestConfig(this.testOptions) + getTestConfig(this.wco) ]; this.config = webpackMerge(webpackConfigs);