diff --git a/packages/angular-cli/commands/build.ts b/packages/angular-cli/commands/build.ts index 1072ed950d9e..b58acf7e8bf7 100644 --- a/packages/angular-cli/commands/build.ts +++ b/packages/angular-cli/commands/build.ts @@ -25,8 +25,8 @@ const BuildCommand = Command.extend({ aliases: ['t', { 'dev': 'development' }, { 'prod': 'production' }] }, { name: 'environment', type: String, default: '', aliases: ['e'] }, - { name: 'output-path', type: 'Path', default: 'dist/', aliases: ['o'] }, - { name: 'watch', type: Boolean, default: false, aliases: ['w'] }, + { name: 'output-path', type: 'Path', default: null, aliases: ['o'] }, + { name: 'watch', type: Boolean, default: false, aliases: ['w'] }, { name: 'watcher', type: String }, { name: 'suppress-sizes', type: Boolean, default: false }, { name: 'base-href', type: String, default: null, aliases: ['bh'] }, diff --git a/packages/angular-cli/commands/serve.ts b/packages/angular-cli/commands/serve.ts index c820102a2eb3..da67a503fb3a 100644 --- a/packages/angular-cli/commands/serve.ts +++ b/packages/angular-cli/commands/serve.ts @@ -22,7 +22,6 @@ export interface ServeTaskOptions { liveReloadLiveCss?: boolean; target?: string; environment?: string; - outputPath?: string; ssl?: boolean; sslKey?: string; sslCert?: string; diff --git a/packages/angular-cli/tasks/build-webpack.ts b/packages/angular-cli/tasks/build-webpack.ts index 47491c209722..148ee583dd5d 100644 --- a/packages/angular-cli/tasks/build-webpack.ts +++ b/packages/angular-cli/tasks/build-webpack.ts @@ -5,22 +5,24 @@ import * as webpack from 'webpack'; import { BuildOptions } from '../commands/build'; import { NgCliWebpackConfig } from '../models/webpack-config'; import { webpackOutputOptions } from '../models/'; +import { CliConfig } from '../models/config'; // Configure build and output; let lastHash: any = null; export default Task.extend({ - // Options: String outputPath run: function (runTaskOptions: BuildOptions) { const project = this.cliProject; - rimraf.sync(path.resolve(project.root, runTaskOptions.outputPath)); + const outputDir = runTaskOptions.outputPath || CliConfig.fromProject().config.apps[0].outDir; + rimraf.sync(path.resolve(project.root, outputDir)); + const config = new NgCliWebpackConfig( project, runTaskOptions.target, runTaskOptions.environment, - runTaskOptions.outputPath, + outputDir, runTaskOptions.baseHref ).config; diff --git a/tests/e2e/tests/build/output-dir.ts b/tests/e2e/tests/build/output-dir.ts index 837ee7f49ed0..0e34c8450fb9 100644 --- a/tests/e2e/tests/build/output-dir.ts +++ b/tests/e2e/tests/build/output-dir.ts @@ -2,11 +2,20 @@ import {ng} from '../../utils/process'; import {expectFileToExist} from '../../utils/fs'; import {expectToFail} from '../../utils/utils'; import {expectGitToBeClean} from '../../utils/git'; +import {updateJsonFile} from '../../utils/project'; export default function() { return ng('build', '-o', './build-output') .then(() => expectFileToExist('./build-output/index.html')) .then(() => expectFileToExist('./build-output/main.bundle.js')) + .then(() => expectToFail(expectGitToBeClean)) + .then(() => updateJsonFile('angular-cli.json', configJson => { + const app = configJson['apps'][0]; + app['outDir'] = 'config-build-output'; + })) + .then(() => ng('build')) + .then(() => expectFileToExist('./config-build-output/index.html')) + .then(() => expectFileToExist('./config-build-output/main.bundle.js')) .then(() => expectToFail(expectGitToBeClean)); }