From a79098fd65ec8dd1ae3f24b8c81ec04bf751e0a7 Mon Sep 17 00:00:00 2001 From: Sokolov Stanislav Date: Wed, 7 Sep 2016 03:02:34 +0500 Subject: [PATCH] Feature request: separate app and vendor bundles --- addon/ng2/blueprints/ng2/files/__path__/main.ts | 2 -- addon/ng2/blueprints/ng2/files/__path__/vendor.ts | 12 ++++++++++++ addon/ng2/blueprints/ng2/files/angular-cli.json | 1 + addon/ng2/models/webpack-build-common.ts | 5 ++++- lib/config/schema.d.ts | 1 + lib/config/schema.json | 3 +++ 6 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 addon/ng2/blueprints/ng2/files/__path__/vendor.ts diff --git a/addon/ng2/blueprints/ng2/files/__path__/main.ts b/addon/ng2/blueprints/ng2/files/__path__/main.ts index 5c3c520409d2..8f155f4137c2 100644 --- a/addon/ng2/blueprints/ng2/files/__path__/main.ts +++ b/addon/ng2/blueprints/ng2/files/__path__/main.ts @@ -1,5 +1,3 @@ -import './polyfills.ts'; - import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { enableProdMode } from '@angular/core'; import { environment } from './environments/environment'; diff --git a/addon/ng2/blueprints/ng2/files/__path__/vendor.ts b/addon/ng2/blueprints/ng2/files/__path__/vendor.ts new file mode 100644 index 000000000000..79ff8d598389 --- /dev/null +++ b/addon/ng2/blueprints/ng2/files/__path__/vendor.ts @@ -0,0 +1,12 @@ +import './polyfills.ts'; + +import '@angular/common'; +import '@angular/compiler'; +import '@angular/core'; +import '@angular/forms'; +import '@angular/http'; +import '@angular/platform-browser'; +import '@angular/platform-browser-dynamic'; +import '@angular/router'; + +import 'rxjs'; \ No newline at end of file diff --git a/addon/ng2/blueprints/ng2/files/angular-cli.json b/addon/ng2/blueprints/ng2/files/angular-cli.json index d86fae02fb79..10dfd2124b36 100644 --- a/addon/ng2/blueprints/ng2/files/angular-cli.json +++ b/addon/ng2/blueprints/ng2/files/angular-cli.json @@ -11,6 +11,7 @@ "index": "index.html", "main": "main.ts", "test": "test.ts", + "vendor": "vendor.ts", "tsconfig": "tsconfig.json", "prefix": "<%= prefix %>", "mobile": <%= isMobile %>, diff --git a/addon/ng2/models/webpack-build-common.ts b/addon/ng2/models/webpack-build-common.ts index d4291f118851..ac88f9ad333d 100644 --- a/addon/ng2/models/webpack-build-common.ts +++ b/addon/ng2/models/webpack-build-common.ts @@ -17,16 +17,19 @@ export function getWebpackCommonConfig( const appRoot = path.resolve(projectRoot, appConfig.root); const appMain = path.resolve(appRoot, appConfig.main); + const appVendor = path.resolve(appRoot, appConfig.vendor); const styles = appConfig.styles ? appConfig.styles.map((style: string) => path.resolve(appRoot, style)) : []; const scripts = appConfig.scripts ? appConfig.scripts.map((script: string) => path.resolve(appRoot, script)) : []; + const lazyModules = findLazyModules(appRoot); let entry: { [key: string]: string[] } = { main: [appMain] + vendor: [appVendor] }; // Only add styles/scripts if there's actually entries there @@ -142,7 +145,7 @@ export function getWebpackCommonConfig( ), new webpack.optimize.CommonsChunkPlugin({ // Optimizing ensures loading order in index.html - name: ['styles', 'scripts', 'main'].reverse() + name: ['styles', 'vendor', 'scripts', 'main'].reverse() }), new webpack.optimize.CommonsChunkPlugin({ minChunks: Infinity, diff --git a/lib/config/schema.d.ts b/lib/config/schema.d.ts index f660f183f221..60b087b58c51 100644 --- a/lib/config/schema.d.ts +++ b/lib/config/schema.d.ts @@ -15,6 +15,7 @@ export interface CliConfig { assets?: string; index?: string; main?: string; + vendor?: string; test?: string; tsconfig?: string; prefix?: string; diff --git a/lib/config/schema.json b/lib/config/schema.json index af5d76267e71..fd9e04572212 100644 --- a/lib/config/schema.json +++ b/lib/config/schema.json @@ -41,6 +41,9 @@ "main": { "type": "string" }, + "vendor": { + "type": "string" + }, "test": { "type": "string" },