默認爲true
,效果就是壓縮js代碼。css
能夠自定義UglifyJsPlugin
和一些配置,默認的壓縮爲uglifyjs-webpack-plugin
vue
//好比在構建的時候,但願新增css的壓縮 minimizer: mode === "development" ? [] : [ new UglifyJsPlugin({ cache: true, parallel: true, sourceMap: mode === "development" }), new OptimizeCSSAssetsPlugin() ]
默認爲false
,runtime
相關的代碼(各個模塊之間的引用和加載的邏輯)內嵌入每一個entry
。node
true
:對於每一個entry
會生成runtime~${entrypoint.name}
的文件。
'single'
: 會生成一個惟一單獨的runtime.js
文件,就是manifest
。
multiple
:和true
一致。name:{}
:自定義runtime
文件的name
默認爲true
,編譯錯誤的時候是否不生成資源。webpack
development
默認都爲true
,production
默認爲false
,選擇是否給module
和chunk
更有意義的名稱。web
nameModules:true
這裏會顯示路徑vue-cli
nameModules:false
直接採用索引自增緩存
namedChunks:true
異步
namedChunks:false
採用索引async
通常不建議配置namedModules
,namedChunks
針對module
的配置,這裏會取hashed
。優化
針對chunk
的配置,特別是異步代碼
通常會採用@vue-cli3
推薦的插件
這4個參數構建默認都是true
,主要是用於構建優化,不須要改,基本就是字面意思。
主要就是根據不一樣的策略來分割打包出來的bundle
。
默認配置:
async(默認)
:
splitChunks:{ chunks:'async'//分割異步打包的代碼, }
打包出b和vue兩個chunk。
all
:
splitChunks:{ chunks:'all',//同時分割同步和異步代碼,推薦。 cacheGroup:{//默認的規則不會打包,須要單獨定義 a: { test: /a\.js/, chunks: "all", name: "a", enforce: true } } }
initial
splitChunks:{ chunks:'initial'//也會同時打包同步和異步,可是異步內部的引入再也不考慮,直接打包在一塊兒,會將vue和b的內容直接打包成chunk, cacheGroup:{//默認的規則不會打包,須要單獨定義 a: { test: /a\.js/, chunks: "all", name: "a", enforce: true } } }
2.name
分割的js名稱,默認爲true,返回
${cacheGroup的key
} ${automaticNameDelimiter
} ${moduleName
},能夠自定義。
3.minChunks
最小公用模塊次數,默認爲1
4.minSize,maxSize,maxAsyncRequests(按需加載時候最大的並行請求數),maxInitialRequests(一個入口最大的並行請求數)
都爲字面意思,通常不建議改。
5.cacheGroups
緩存策略,默認設置了分割node_modules
和公用模塊。內部的參數能夠和覆蓋外部的參數。test
正則匹配文件priority
優先級reuseExistingChunk
是否複用存在的chunk
cacheGroup:{ a: { test: /a\.js/,//匹配規則 minChunks:2,//重寫公用chunks的次數 chunks: "all", name: "a",//重寫文件名稱 enforce: true //強制生成 } }
6.automaticNameDelimiter
文件名稱分隔符號~