From db4c93511a33cc869810b5c1d4fc52d342e07367 Mon Sep 17 00:00:00 2001 From: Ashkan Daie Date: Fri, 18 Aug 2017 13:51:20 -0700 Subject: [PATCH] Support electron-renderer platform --- packages/@angular/cli/lib/config/schema.json | 2 +- packages/@angular/cli/models/webpack-config.ts | 6 +++++- packages/@angular/cli/models/webpack-configs/electron.ts | 9 +++++++++ packages/@angular/cli/models/webpack-configs/index.ts | 1 + packages/@angular/cli/tasks/serve.ts | 3 +++ 5 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 packages/@angular/cli/models/webpack-configs/electron.ts diff --git a/packages/@angular/cli/lib/config/schema.json b/packages/@angular/cli/lib/config/schema.json index 9a890308dbab..e3fbe95a28b3 100644 --- a/packages/@angular/cli/lib/config/schema.json +++ b/packages/@angular/cli/lib/config/schema.json @@ -85,7 +85,7 @@ }, "platform": { "type": "string", - "enum": ["browser", "server"], + "enum": ["browser", "server", "electron"], "default": "browser", "description": "The runtime platform of the app." }, diff --git a/packages/@angular/cli/models/webpack-config.ts b/packages/@angular/cli/models/webpack-config.ts index 35ed6d50042c..91428b025d1b 100644 --- a/packages/@angular/cli/models/webpack-config.ts +++ b/packages/@angular/cli/models/webpack-config.ts @@ -8,6 +8,7 @@ import { getProdConfig, getStylesConfig, getServerConfig, + getElectronConfig, getNonAotConfig, getAotConfig } from './webpack-configs'; @@ -38,7 +39,10 @@ export class NgCliWebpackConfig { public buildConfig() { const platformConfig = this.wco.appConfig.platform === 'server' ? - getServerConfig(this.wco) : getBrowserConfig(this.wco); + getServerConfig(this.wco) : + this.wco.appConfig.platform === 'electron' ? + getElectronConfig(this.wco) : + getBrowserConfig(this.wco); let webpackConfigs = [ getCommonConfig(this.wco), diff --git a/packages/@angular/cli/models/webpack-configs/electron.ts b/packages/@angular/cli/models/webpack-configs/electron.ts new file mode 100644 index 000000000000..18e541c909ce --- /dev/null +++ b/packages/@angular/cli/models/webpack-configs/electron.ts @@ -0,0 +1,9 @@ +import { WebpackConfigOptions } from '../webpack-config'; + +import { getBrowserConfig } from './browser'; + +export function getElectronConfig(wco: WebpackConfigOptions) { + const config = getBrowserConfig(wco); + config.target = 'electron-renderer'; + return config; +} diff --git a/packages/@angular/cli/models/webpack-configs/index.ts b/packages/@angular/cli/models/webpack-configs/index.ts index 70560367f79f..eead50994397 100644 --- a/packages/@angular/cli/models/webpack-configs/index.ts +++ b/packages/@angular/cli/models/webpack-configs/index.ts @@ -3,6 +3,7 @@ export * from './common'; export * from './development'; export * from './production'; export * from './server'; +export * from './electron'; export * from './styles'; export * from './test'; export * from './typescript'; diff --git a/packages/@angular/cli/tasks/serve.ts b/packages/@angular/cli/tasks/serve.ts index 232cc0dd37a0..ea2a13ca15e7 100644 --- a/packages/@angular/cli/tasks/serve.ts +++ b/packages/@angular/cli/tasks/serve.ts @@ -68,6 +68,9 @@ export default Task.extend({ if (appConfig.platform === 'server') { throw new SilentError('ng serve for platform server applications is coming soon!'); } + if (appConfig.platform === 'electron') { + throw new SilentError('ng serve for platform electron applications is not supported.'); + } if (serveTaskOptions.deleteOutputPath) { fs.removeSync(path.resolve(this.project.root, outputPath)); }