diff --git a/packages/angular-cli/commands/build.run.ts b/packages/angular-cli/commands/build.run.ts index 0e5dc445ff39..0c211b7bbc09 100644 --- a/packages/angular-cli/commands/build.run.ts +++ b/packages/angular-cli/commands/build.run.ts @@ -1,6 +1,5 @@ import { Version } from '../upgrade/version'; import WebpackBuild from '../tasks/build-webpack'; -import WebpackBuildWatch from '../tasks/build-webpack-watch'; import { BuildOptions } from './build'; export default function buildRun(commandOptions: BuildOptions) { @@ -36,18 +35,9 @@ export default function buildRun(commandOptions: BuildOptions) { // Check angular version. Version.assertAngularVersionIs2_3_1OrHigher(project.root); - const ui = this.ui; - const buildTask = commandOptions.watch ? - new WebpackBuildWatch({ + const buildTask = new WebpackBuild({ cliProject: project, - ui: ui, - outputPath: commandOptions.outputPath, - target: commandOptions.target, - environment: commandOptions.environment - }) : - new WebpackBuild({ - cliProject: project, - ui: ui, + ui: this.ui, outputPath: commandOptions.outputPath, target: commandOptions.target, environment: commandOptions.environment, diff --git a/packages/angular-cli/tasks/build-webpack-watch.ts b/packages/angular-cli/tasks/build-webpack-watch.ts deleted file mode 100644 index 5ef0d9283c2f..000000000000 --- a/packages/angular-cli/tasks/build-webpack-watch.ts +++ /dev/null @@ -1,60 +0,0 @@ -import * as rimraf from 'rimraf'; -import * as path from 'path'; -const Task = require('../ember-cli/lib/models/task'); -import * as webpack from 'webpack'; -import { NgCliWebpackConfig } from '../models/webpack-config'; -import { getWebpackStatsConfig } from '../models/'; -import { BuildOptions } from '../commands/build'; -import { CliConfig } from '../models/config'; - -let lastHash: any = null; - -export default Task.extend({ - run: function(runTaskOptions: BuildOptions) { - - const project = this.cliProject; - - const outputDir = runTaskOptions.outputPath || CliConfig.fromProject().config.apps[0].outDir; - const deployUrl = runTaskOptions.deployUrl || - CliConfig.fromProject().config.apps[0].deployUrl; - rimraf.sync(path.resolve(project.root, outputDir)); - - const config = new NgCliWebpackConfig( - project, - runTaskOptions.target, - runTaskOptions.environment, - outputDir, - runTaskOptions.baseHref, - runTaskOptions.i18nFile, - runTaskOptions.i18nFormat, - runTaskOptions.locale, - runTaskOptions.aot, - runTaskOptions.sourcemap, - runTaskOptions.vendorChunk, - runTaskOptions.verbose, - runTaskOptions.progress, - deployUrl, - runTaskOptions.outputHashing, - runTaskOptions.extractCss, - ).config; - const webpackCompiler: any = webpack(config); - - const statsConfig = getWebpackStatsConfig(runTaskOptions.verbose); - - return new Promise((resolve, reject) => { - webpackCompiler.watch({}, (err: any, stats: any) => { - if (err) { - lastHash = null; - console.error(err.stack || err); - if (err.details) { console.error(err.details); } - reject(err.details); - } - - if (stats.hash !== lastHash) { - lastHash = stats.hash; - process.stdout.write(stats.toString(statsConfig) + '\n'); - } - }); - }); - } -}); diff --git a/packages/angular-cli/tasks/build-webpack.ts b/packages/angular-cli/tasks/build-webpack.ts index c1b68b7189d9..b086ae2e48a6 100644 --- a/packages/angular-cli/tasks/build-webpack.ts +++ b/packages/angular-cli/tasks/build-webpack.ts @@ -8,10 +8,7 @@ import { getWebpackStatsConfig } from '../models/'; import { CliConfig } from '../models/config'; -// Configure build and output; -let lastHash: any = null; - -export default Task.extend({ +export default Task.extend({ run: function (runTaskOptions: BuildOptions) { const project = this.cliProject; @@ -39,23 +36,19 @@ export default Task.extend({ runTaskOptions.extractCss, ).config; - const webpackCompiler: any = webpack(config); - + const webpackCompiler = webpack(config); const statsConfig = getWebpackStatsConfig(runTaskOptions.verbose); return new Promise((resolve, reject) => { - webpackCompiler.run((err: any, stats: any) => { + const callback: webpack.compiler.CompilerCallback = (err, stats) => { if (err) { return reject(err); } - // Don't keep cache - // TODO: Make conditional if using --watch - webpackCompiler.purgeInputFileSystem(); + this.ui.writeLine(stats.toString(statsConfig)); - if (stats.hash !== lastHash) { - lastHash = stats.hash; - process.stdout.write(stats.toString(statsConfig) + '\n'); + if (runTaskOptions.watch) { + return; } if (stats.hasErrors()) { @@ -63,7 +56,13 @@ export default Task.extend({ } else { resolve(); } - }); + }; + + if (runTaskOptions.watch) { + webpackCompiler.watch({}, callback); + } else { + webpackCompiler.run(callback); + } }) .catch((err: Error) => { if (err) {