使用webpack对js文件进行代码分隔

webpack配置文件

/** 可以将node_modules 中代码单独打包一个chunk最终输出
 */
optimization: {
	splitChunks: {
		chunks: "all" //这表明将选择哪些 chunk 进行优化。当提供一个字符串,有效值为 all,async 和 initial。设置为 all 可能特别强大,因为这意味着 chunk 可以在异步和非异步 chunk 之间共享。
		priority: 3, //优化将优先考虑具有更高 priority(优先级)的缓存组。默认组的优先级为负,

		//每个缓存组 optimization.splitChunks.cacheGroups[x].maxSize 全局使用 optimization.splitChunks.maxSize 或对后备缓存组 
		//maxSize 比 maxInitialRequest/maxAsyncRequests 具有更高的优先级。实际优先级是 maxInitialRequest/maxAsyncRequests < maxSize < minSize
		maxSize: 1024,
		//如果当前 chunk 包含已从主 bundle 中拆分出的模块,则它将被重用,而不是生成新的模块。这可能会影响 chunk 的结果文件名
		cacheGroups: {
			defaultVendors: {
				reuseExistingChunk: true,
			},
		},
	}
}

实际使用

optimization: {
	splitChunks: {
		cacheGroups: {
			commons: {
				name: "commons",
				minChunks: 2,
				chunks: "async", //异步抽取公共模块
				priority: 3,
				maxSize: 1024,
			},
			vendors: {
				name: "chunk-vendors",
				test: /[\\/]node_modules[\\/]/,
				chunks: "initial",
				priority: 2,
				reuseExistingChunk: true,
			},
			antDesignVue: {
				name: "chunk-ant-design-vue",
				test: /[\\/]node_modules[\\/]ant-design-vue[\\/]/,
				chunks: "initial",
				priority: 4,
				reuseExistingChunk: true,
				enforce: true,
			},
			// =========自定义模块============
			svgs: {
				//svg 图标单独打包
				name: "chunk-svgs",
				test: path.resolve("src/assets/svg"),
				chunks: "initial",
				priority: 6,
				reuseExistingChunk: true,
				enforce: true,
			},
		}
	}
},

You May Also Like

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注