Client: add dll support

pull/40/head
Chocobozzz 2017-01-19 21:54:40 +01:00
parent be3bac3afb
commit cc3e2d9b7a
4 changed files with 55 additions and 2 deletions

1
client/.gitignore vendored
View File

@ -2,3 +2,4 @@
/node_modules
/compiled
/stats.json
/dll

View File

@ -323,7 +323,7 @@ module.exports = function (options) {
* See: https://webpack.github.io/docs/configuration.html#node
*/
node: {
global: 'true',
global: true,
crypto: 'empty',
process: true,
module: false,

View File

@ -1,10 +1,12 @@
const helpers = require('./helpers')
const webpackMerge = require('webpack-merge') // used to merge webpack configs
const webpackMergeDll = webpackMerge.strategy({plugins: 'replace'})
const commonConfig = require('./webpack.common.js') // the settings that are common to prod and dev
/**
* Webpack Plugins
*/
const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin')
const DefinePlugin = require('webpack/lib/DefinePlugin')
const NamedModulesPlugin = require('webpack/lib/NamedModulesPlugin')
const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin')
@ -23,6 +25,8 @@ const METADATA = webpackMerge(commonConfig({env: ENV}).metadata, {
HMR: HMR
})
const DllBundlesPlugin = require('webpack-dll-bundles-plugin').DllBundlesPlugin
/**
* Webpack configuration
*
@ -106,6 +110,52 @@ module.exports = function (env) {
}
}),
new DllBundlesPlugin({
bundles: {
polyfills: [
'core-js',
{
name: 'zone.js',
path: 'zone.js/dist/zone.js'
},
{
name: 'zone.js',
path: 'zone.js/dist/long-stack-trace-zone.js'
},
'ts-helpers'
],
vendor: [
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
'@angular/core',
'@angular/common',
'@angular/forms',
'@angular/http',
'@angular/router',
'@angularclass/hmr',
'rxjs'
]
},
dllDir: helpers.root('dll'),
webpackConfig: webpackMergeDll(commonConfig({env: ENV}), {
devtool: 'cheap-module-source-map',
plugins: []
})
}),
/**
* Plugin: AddAssetHtmlPlugin
* Description: Adds the given JS or CSS file to the files
* Webpack knows about, and put it into the list of assets
* html-webpack-plugin injects into the generated html.
*
* See: https://github.com/SimenB/add-asset-html-webpack-plugin
*/
new AddAssetHtmlPlugin([
{ filepath: helpers.root(`dll/${DllBundlesPlugin.resolveFile('polyfills')}`) },
{ filepath: helpers.root(`dll/${DllBundlesPlugin.resolveFile('vendor')}`) }
]),
/**
* Plugin: NamedModulesPlugin (experimental)
* Description: Uses file names as module name.

View File

@ -85,7 +85,9 @@
"zone.js": "~0.7.2"
},
"devDependencies": {
"add-asset-html-webpack-plugin": "^1.0.2",
"codelyzer": "2.0.0-beta.4",
"standard": "^8.0.0"
"standard": "^8.0.0",
"webpack-dll-bundles-plugin": "^1.0.0-beta.5"
}
}