Skip to content

Commit e627f3a

Browse files
davidsekarMarkPieszak
authored andcommitted
fix (AoT - Lazy load) : lazy modules chunks creation on Server bundle (#410)
Closes #422 Closes #413 * Modified .csproject to emit the wwwroot/dist folder, if the folder is not created yet * Remove Jest and added Karma test runner for executing unit test cases * Added PhantomJS for running test in CI environments. Removed deprecated tslint rules and amended existing rules. * adding tslint config to angular-cli for the ng lint command (#407) * fix (AoT - Lazy load) : commented code that prevented lazy modules chunks from getting created on PlatformServer * packages updated to fix 1) Zone already loaded error, 2) issue with not-found component template load issue * Update README.md * Update README.md * chore(engine): remove comments * Enable uglifyjs on server bundle to reduce bundle size * Mangling and compress options disabled for Server bundle to fix preboot script issue. Removed duplicated Bootstrap css from vendor bundle
1 parent 3848e43 commit e627f3a

File tree

6 files changed

+39
-30
lines changed

6 files changed

+39
-30
lines changed

ClientApp/app/containers/not-found/not-found.component.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { Component, OnInit } from '@angular/core';
33
@Component({
44
selector: 'not-found',
55
templateUrl: './not-found.component.html'
6-
// styleUrls: ['./not-found.component.css']
76
})
87
export class NotFoundComponent implements OnInit {
98
constructor() { }

ClientApp/boot.server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { ngAspnetCoreEngine, IEngineOptions, createTransferScript } from './poly
1313

1414
enableProdMode();
1515

16-
export default createServerRenderer((params: BootFuncParams) => {
16+
export default createServerRenderer((params) => {
1717

1818
// Platform-server provider configuration
1919
const setupOptions: IEngineOptions = {

Views/Shared/_Layout.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
@Html.Raw(ViewData["Links"])
1111

1212
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/0.8.2/css/flag-icon.min.css" />
13-
<link rel="stylesheet" href="~/dist/vendor.css" asp-append-version="true" />
13+
<!-- <link rel="stylesheet" href="~/dist/vendor.css" asp-append-version="true" /> -->
1414

1515
@Html.Raw(ViewData["Styles"])
1616

package.json

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010
"test:coverage": "npm run test -- --coverage",
1111
"build:dev": "npm run build:vendor && npm run build:webpack",
1212
"build:webpack": "webpack --progress --color",
13-
"build:prod": "npm run build:vendor -- --env.prod && npm run build:webpack -- --env.prod",
14-
"build:vendor": "webpack --config webpack.config.vendor.js --progress --color"
13+
"build:prod": "npm run clean && npm run build:vendor -- --env.prod && npm run build:webpack -- --env.prod",
14+
"build:vendor": "webpack --config webpack.config.vendor.js --progress --color",
15+
"clean": "rimraf wwwroot/dist clientapp/dist"
1516
},
1617
"dependencies": {
1718
"@angular/animations": "^4.3.0",
@@ -29,21 +30,21 @@
2930
"@ngx-translate/core": "^6.0.1",
3031
"@ngx-translate/http-loader": "0.0.3",
3132
"@types/node": "^7.0.12",
32-
"angular2-router-loader": "^0.3.4",
33-
"angular2-template-loader": "0.6.0",
34-
"aspnet-prerendering": "2.0.3",
33+
"angular2-router-loader": "^0.3.5",
34+
"angular2-template-loader": "^0.6.2",
35+
"aspnet-prerendering": "^3.0.1",
3536
"aspnet-webpack": "^2.0.1",
3637
"awesome-typescript-loader": "^3.0.0",
3738
"bootstrap": "^3.3.7",
3839
"bootstrap-sass": "^3.3.7",
39-
"core-js": "^2.4.1",
40+
"core-js": "^2.5.1",
4041
"css": "^2.2.1",
41-
"css-loader": "^0.25.0",
42-
"event-source-polyfill": "^0.0.7",
43-
"expose-loader": "^0.7.1",
44-
"extract-text-webpack-plugin": "^2.0.0-rc",
45-
"file-loader": "^0.9.0",
46-
"html-loader": "^0.4.4",
42+
"css-loader": "^0.28.7",
43+
"event-source-polyfill": "^0.0.9",
44+
"expose-loader": "^0.7.3",
45+
"extract-text-webpack-plugin": "^3.0.0",
46+
"file-loader": "^0.11.2",
47+
"html-loader": "^0.5.1",
4748
"isomorphic-fetch": "^2.2.1",
4849
"jquery": "^2.2.1",
4950
"json-loader": "^0.5.4",
@@ -52,18 +53,18 @@
5253
"node-sass": "^4.5.2",
5354
"preboot": "^5.0.0",
5455
"raw-loader": "^0.5.1",
55-
"rimraf": "^2.6.1",
56-
"rxjs": "^5.0.1",
57-
"sass-loader": "^6.0.3",
56+
"rimraf": "^2.6.2",
57+
"rxjs": "^5.4.3",
58+
"sass-loader": "^6.0.6",
5859
"signalr": "^2.2.1",
59-
"style-loader": "^0.13.1",
60+
"style-loader": "^0.18.2",
6061
"to-string-loader": "^1.1.5",
61-
"typescript": "2.3.4",
62+
"typescript": "2.5.2",
6263
"url-loader": "^0.5.7",
63-
"webpack": "^2.2.0",
64-
"webpack-hot-middleware": "^2.12.2",
65-
"webpack-merge": "^0.14.1",
66-
"zone.js": "^0.8.9"
64+
"webpack": "^3.6.0",
65+
"webpack-hot-middleware": "^2.19.1",
66+
"webpack-merge": "^4.1.0",
67+
"zone.js": "^0.8.17"
6768
},
6869
"devDependencies": {
6970
"@angular/cli": "^1.3.2",
@@ -84,6 +85,7 @@
8485
"karma-remap-coverage": "^0.1.4",
8586
"karma-sourcemap-loader": "^0.3.7",
8687
"karma-webpack": "^2.0.3",
87-
"tslint": "^5.0.0"
88+
"tslint": "^5.7.0",
89+
"webpack-bundle-analyzer": "^2.9.0"
8890
}
8991
}

webpack.config.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const webpack = require('webpack');
1313
const merge = require('webpack-merge');
1414
const AotPlugin = require('@ngtools/webpack').AotPlugin;
1515
const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin;
16+
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
1617

1718
const { sharedModuleRules } = require('./webpack.additions');
1819

@@ -56,6 +57,7 @@ module.exports = (env) => {
5657
moduleFilenameTemplate: path.relative(clientBundleOutputDir, '[resourcePath]') // Point sourcemap entries to the original file locations on disk
5758
})
5859
] : [
60+
// new BundleAnalyzerPlugin(),
5961
// Plugins that apply in production builds only
6062
new webpack.optimize.UglifyJsPlugin(),
6163
new AotPlugin({
@@ -68,7 +70,7 @@ module.exports = (env) => {
6870

6971
// Configuration for server-side (prerendering) bundle suitable for running in Node
7072
const serverBundleConfig = merge(sharedConfig, {
71-
resolve: { mainFields: ['main'] },
73+
// resolve: { mainFields: ['main'] },
7274
entry: { 'main-server': './ClientApp/boot.server.ts' },
7375
plugins: [
7476
new webpack.DllReferencePlugin({
@@ -78,6 +80,10 @@ module.exports = (env) => {
7880
name: './vendor'
7981
})
8082
].concat(isDevBuild ? [] : [
83+
new webpack.optimize.UglifyJsPlugin({
84+
compress: false,
85+
mangle: false
86+
}),
8187
// Plugins that apply in production builds only
8288
new AotPlugin({
8389
tsConfigPath: './tsconfig.json',
@@ -90,7 +96,7 @@ module.exports = (env) => {
9096
path: path.join(__dirname, './ClientApp/dist')
9197
},
9298
target: 'node',
93-
devtool: 'inline-source-map'
99+
devtool: isDevBuild ? 'inline-source-map': false
94100
});
95101

96102
return [clientBundleConfig, serverBundleConfig];

webpack.config.vendor.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const treeShakableModules = [
1616
'zone.js',
1717
];
1818
const nonTreeShakableModules = [
19-
'bootstrap',
20-
'bootstrap/dist/css/bootstrap.css',
19+
// 'bootstrap',
20+
// 'bootstrap/dist/css/bootstrap.css',
2121
'core-js',
2222
// 'es6-promise',
2323
// 'es6-shim',
@@ -90,7 +90,9 @@ module.exports = (env) => {
9090
path: path.join(__dirname, 'ClientApp', 'dist', '[name]-manifest.json'),
9191
name: '[name]_[hash]'
9292
})
93-
]
93+
].concat(isDevBuild ? [] : [
94+
new webpack.optimize.UglifyJsPlugin()
95+
])
9496
});
9597

9698
return [clientBundleConfig, serverBundleConfig];

0 commit comments

Comments
 (0)