依赖外置
const cdn = {
js : [
'https:
'https:
'https:
'https:
'https:
],
externals : {
'vue':'Vue',
'element-ui':'ELEMENT',
'axios': 'axios',
'jquery':'jQuery',
"lodash": {
commonjs: "lodash",
commonjs2: "lodash",
amd: "lodash",
root: "_"
}
}
}
module.exports = {
externals:cdn.externals
}
module.exports = {
externals:cdn.externals,
plugins: [
new AddCommonScript({
paths: cdn.js
})
]
}
- AddCommonScript插件 添加自定义的js
class AddCommonScript {
constructor (options) {
this.options = options
}
apply (compiler) {
let paths = this.options.paths
compiler.plugin('compilation', (compilation, options) => {
compilation.plugin('html-webpack-plugin-before-html-processing', (htmlPluginData, callback) => {
paths.forEach((path) => {
htmlPluginData.assets.js.unshift(path)
})
callback(null, htmlPluginData)
})
})
}
}
module.exports = AddCommonScript
class AddCommonScript {
constructor (options) {
this.options = options
}
apply (compiler) {
let paths = this.options.paths
compiler.hooks.compilation.tap('AddCommonScript', (compilation, options) => {
compilation.hooks.htmlWebpackPluginBeforeHtmlProcessing.tap('AddCommonScript',htmlPluginData => {
paths.forEach((path) => {
htmlPluginData.assets.js.unshift(path)
})
})
})
}
}
module.exports = AddCommonScript
多线程编译
npm i happypack -D
const HappyPack = require('happypack')
const os = require('os')
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
module.exports = {
module:{
rules:[{
test: /\.js$/,
include: [
utils.resolve("src"),
utils.resolve("node_modules/element-ui/src"),
utils.resolve("node_modules/element-ui/packages")
],
// use: ["babel-loader"]
use:"HappyPack/loader?id=js"
},
{
test: /\.vue$/,
include: [
utils.resolve("src"),
utils.resolve("node_modules/element-ui/src"),
utils.resolve("node_modules/element-ui/packages")
//utils.resolve('node_modules/element-ui/packages/date-picker/src/basic')
],
use:'HappyPack/loader?id=vue'
// loader: "vue-loader",
// options: vueLoaderConfig
}
],
plugins:[
new HappyPack({
id:'js',
loaders:['babel-loader?cacheDirectory=true'],
threadPool:happyThreadPool
}),
new HappyPack({
id:'vue',
loaders:[{
loader: "vue-loader",
options: vueLoaderConfig
}]
})
]
}
}
编译缓存
npm i hard-source-webpack-plugin -D
var HardSourceWebpackPlugin = require('hard-source-webpack-plugin')
module.export = {
plugins:[
new HardSourceWebpackPlugin()
]
}
辅助功能,查看包体积,可用于分析哪些包需要外置
npm i webpack-bundle-analyzer -D
const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin
module.export = {
plugins:[
new BundleAnalyzerPlugin()
]
}