mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-20 05:24:57 +08:00
93 lines
2.8 KiB
TypeScript
93 lines
2.8 KiB
TypeScript
import { BuildOptions } from '../models/build-options';
|
|
import { baseBuildCommandOptions } from './build';
|
|
import { CliConfig } from '../models/config';
|
|
import { Version } from '../upgrade/version';
|
|
import { ServeTaskOptions } from './serve';
|
|
import { checkPort } from '../utilities/check-port';
|
|
import { overrideOptions } from '../utilities/override-options';
|
|
|
|
const Command = require('../ember-cli/lib/models/command');
|
|
|
|
const config = CliConfig.fromProject() || CliConfig.fromGlobal();
|
|
const defaultPort = process.env.PORT || config.get('defaults.serve.port');
|
|
const defaultHost = config.get('defaults.serve.host');
|
|
|
|
export interface ServeTaskOptions extends BuildOptions {
|
|
port?: number;
|
|
host?: string;
|
|
proxyConfig?: string;
|
|
liveReload?: boolean;
|
|
liveReloadClient?: string;
|
|
ssl?: boolean;
|
|
sslKey?: string;
|
|
sslCert?: string;
|
|
open?: boolean;
|
|
hmr?: boolean;
|
|
}
|
|
|
|
// Expose options unrelated to live-reload to other commands that need to run serve
|
|
export const baseServeCommandOptions: any = overrideOptions(
|
|
baseBuildCommandOptions.concat([
|
|
{ name: 'port', type: Number, default: defaultPort, aliases: ['p'] },
|
|
{
|
|
name: 'host',
|
|
type: String,
|
|
default: defaultHost,
|
|
aliases: ['H'],
|
|
description: `Listens only on ${defaultHost} by default`
|
|
},
|
|
{ name: 'proxy-config', type: 'Path', aliases: ['pc'] },
|
|
{ name: 'ssl', type: Boolean, default: false },
|
|
{ name: 'ssl-key', type: String, default: 'ssl/server.key' },
|
|
{ name: 'ssl-cert', type: String, default: 'ssl/server.crt' },
|
|
{
|
|
name: 'open',
|
|
type: Boolean,
|
|
default: false,
|
|
aliases: ['o'],
|
|
description: 'Opens the url in default browser',
|
|
},
|
|
{ name: 'live-reload', type: Boolean, default: true, aliases: ['lr'] },
|
|
{
|
|
name: 'live-reload-client',
|
|
type: String,
|
|
description: 'specify the URL that the live reload browser client will use'
|
|
},
|
|
{
|
|
name: 'hmr',
|
|
type: Boolean,
|
|
default: false,
|
|
description: 'Enable hot module replacement',
|
|
}
|
|
]), [
|
|
{ name: 'watch', default: true },
|
|
]
|
|
);
|
|
|
|
const ServeCommand = Command.extend({
|
|
name: 'serve',
|
|
description: 'Builds and serves your app, rebuilding on file changes.',
|
|
aliases: ['server', 's'],
|
|
|
|
availableOptions: baseServeCommandOptions,
|
|
|
|
run: function (commandOptions: ServeTaskOptions) {
|
|
const ServeTask = require('../tasks/serve').default;
|
|
|
|
Version.assertAngularVersionIs2_3_1OrHigher(this.project.root);
|
|
return checkPort(commandOptions.port, commandOptions.host, defaultPort)
|
|
.then(port => {
|
|
commandOptions.port = port;
|
|
|
|
const serve = new ServeTask({
|
|
ui: this.ui,
|
|
project: this.project,
|
|
});
|
|
|
|
return serve.run(commandOptions);
|
|
});
|
|
}
|
|
});
|
|
|
|
export default ServeCommand;
|