node-module会把所有的库打包成一个文件
dll会把所有引入的文件拆开,打包成不同的文件。
使用dll技术,对某些库(第三方库:jquery,react,vue…)进行单独打包
当你运行webpack时,默认查找webpack.config.js配置文件
需求:需要运行webpack.dll.js文件
运行指令 -->webpack --config webpack.dll.js
下面的配置就会启动
webpack.dll.js
const{resolve}=require('path');
const webpack=require('webpack');
module.exports={
entry:{
//最终生成的[name]--->jquery
//['jquery']--->要打包的库是jquery
jquery:['jquery']
},
output:{
filename:'[name].js',
path:resolve(_dirname,'dll'),
library:'[name]_[hash]' //打包的库里面向外暴露出去的内容叫什么名字
},
plugins:[
//打包生成一个mainnifest.json--->该文件提供和jquery映射
new webpack.DllPlugin({
name:'[name]_[hash]', //映射库的暴露的内容名称
path:resolve(_dirname,'dll/mainfest.json') //输出文件路径
})
],
mode:'production'
}
dll打包后,生成的jquery.js文件内部的内容
webpack.dll.js文件的配置决定了打包的库里面向外暴露出去的内容叫什么名字
mainifest.json里面文件的映射关系
AddAssetHtmlWebpackPlugin({
filepath:resove(_dirname)
})
webpack.config.js
plugins:[
new HtmlWebpackPlugin({
template: './src/index.html'
}),
//告诉webpack哪些库不参与打包,同时使用时的名称也得变
new webpack.DllReferencePlugin({
mainifest:resove(__dirname,'dll/manifest.json')
}),
//将某个文件打包出去,并且在 HTML 中自动引入该资源
new AddAssetHtmlWebpackPlugin({
filepath:resolve(_dirname,'dll/jquery.js')
})
]
控制台指令: webpack
会产生下图自动打包jquery的效果变化