module.exports = { entry:'./src/index.js' output: { //文件名称(指定名称+目录) filename:'js/[name].js' //输出文件目录(将来所有资源输出的公共目录) path:resolve(__dirname,'build'), // 一般是生产环境,所有资源引入公共路径前缀 --->'imgs/a.jpg'-->'/imgs/a.jpg' publicPath:'/', chunkFilename:'js/[name]_chunk.js',//非入口chunk的名称 library:'[name]', //整个库向外暴露的变量名
//libraryTarget:'window' //变量名添加到哪个 browser
//libraryTarget:'global' 变量名添加到哪个上 node
libraryTarget: 'commonjs' 打包后变成 exports['main']= },
}
什么是非入口chunk以及chunkFilename的作用分析?
注释:import 和 optimization 两种方式 都会遵循 '[name]_chunk.js'的名称
写了以后,先注释 chunkFilename ,然后打包 bulild 下多了 0.js文件,这时候打包是遵循的 filename规则
但是为什么是0.js呢?
因为chunk都属于入口,所以默认都是main.js ,那么import也会形成新的chunk,如果也是main,那么就冲突了,所以webpack就采用命名,若还有就是 1,2等等
发现0.js不好看,所以就用到了chunkFilename,采用后,打包后的文件名为 0_chunk.js
library的作用?
打包时向外暴露出去的变量,因为打包后的文件是main.js所以暴露出去的也是main变量名
那么外界引入这个js文件时,就能得到main这个变量
libraryTarget的作用?
把这个变量添加在那个对象下,比如window