优化总结minimize默认为true,作用是压缩js代码。最小化器可以自定义UglifyJsPlugin和一些配置。默认压缩是uglifyjs-webpack-plugin//比如构建时,希望为css添加一个新的压缩最小化器:mode==="development"?[]:[newUglifyJsPlugin({cache:true,parallel:true,sourceMap:mode==="development"}),newOptimizeCSSAssetsPlugin()]runtimeChunk默认为false,运行时相关代码(模块间的引用和加载逻辑))嵌入在每个条目中。true:将为每个条目生成一个runtime~${entrypoint.name}文件。'single':将生成单个runtime.js文件,即manifest。multiple:与true一致。name:{}:自定义运行时文件的namenoEmitOnErrors,默认为true,编译出错时是否不生成资源。namedModules,namedChunksdevelopment默认为true,production默认为false,选择是否给module和chunk起更有意义的名字。nameModules:true将在此处显示路径。nameModules:false直接使用索引自增namedChunks:truenamedChunks:false使用索引moduleIds。一般不建议配置namedModules。namedChunks是模块配置,这里取hashed。对于chunk配置,尤其是异步代码,一般使用@vue-cli3推荐的插件removeAvailableModules、removeEmptyChunks、mergeDuplicateChunks、flagIncludedChunks这四个参数来构建。默认为true,主要用于构建优化。不用改,基本上就是字面上的意思。splitChunks主要是将打包好的bundle按照不同的策略进行拆分。默认配置:1.chunksasync(默认):splitChunks:{chunks:'async'//拆分异步打包的代码,}packageb和vue两个chunks。all:splitChunks:{chunks:'all',//同时拆分同步和异步代码,推荐。cacheGroup:{//默认规则不会打包,需要单独定义一个:{test:/a\.js/,chunks:"all",name:"a",enforce:true}}}initialsplitChunks:{chunks:'initial'//也会同时封装同步和异步,但是不再考虑异步内部的引入,直接封装在一起,vue和b的内容会直接封装成chunks,cacheGroup:{//默认规则不会打包,需要单独定义a:{test:/a\.js/,chunks:"all",name:"a",enforce:true}}}2.namesplitjsname,默认为true,返回${cacheGroup的key}${automaticNameDelimiter}${moduleName}可以自定义。3、minChunks公共模块的最小个数,默认为14。minSize、maxSize、maxAsyncRequests(按需加载时的最大并行请求数)、maxInitialRequests(一个条目的最大并行请求数)都是字面意思,和通常不建议更改它们。5.cacheGroups缓存策略默认设置为拆分node_modules和publicmodules。内部参数可以覆盖外部参数。测试正则匹配文件优先级priorityreuseExistingChunk是否重用已有chunkcacheGroup:{a:{test:/a\.js/,//匹配规则minChunks:2,//重写publicchunks的个数chunks:"all",name:"a",//改写文件名enforce:true//强制生成}}6.automaticNameDelimiter文件名分隔符~
