Vue Cli的配置中configureWebpack和chainWebpack的主要作用及区别是什么?

直接区别:

configureWebpack项直接覆盖同名配置;chainWebpack项直接修改默认配置。

configureWebpack配置:

js 复制代码
// vue.config.js
module.exports = {
  configureWebpack: {
    plugins: [
      new MyAwesomeWebpackPlugin()
    ]
  }
}

该代码段中的对象将会被webpack-merge合并入最终的Webpack配置中。

如果需要基于环境有条件地配置,或者想要直接修改配置,可以将configureWebpack配置成一个函数方法。代码如下:

js 复制代码
// vue.config.js
module.exports = {
	configureWebpack: config => {
		if(process.env.NODE_ENV === 'production') {
			// 为生产环境进行配置
		} else {
			// 为开发环境进行配置
		}
	}
}

采用configureWebpack的方式会直接覆盖同名的配置,如果只想修改某个配置的某一个子项,例如loader或plugin的选项,则很可能会覆盖掉不想要覆盖的默认配置,除非把这些默认配置再写一遍。

chainWebpack配置:

js 复制代码
// vue.config.js
module.exports = {
  chainWebpack: config => {
    config.module
    .rule('vue')
    .use('vue-loader')
    .tap(options => {
      // 修改选项
      return options
    })
    
    // 替换一个规则的loader
    const svgRule = config.module.rule('svg')
    svgRule.uses.clear() // 清除已有的所有loader
    // 添加要替换的loader
    svgRule
    .use('use-svg-loader')
    .loader('use-svg-loader')
  }
}

chainWebpack项是一个函数,会接收一个基于webpack-chain的实例,该配置项提供了一个Webpack原始配置的上层抽象,使得可以定义具名的loader规则和具名的插件,并在后期对它们的选项进行修改。

chainWebpack提供了颗粒度更细的配置修改。

比起直接修改configureWebpack配置,chainWebpack的表达能力更强,也更为安全。

根据自己的场景自己选择。

相关推荐
wuhen_n1 小时前
网络请求在Vite层的代理与Mock:告别跨域和后端依赖
前端·javascript·vue.js
小彭努力中1 小时前
193.Vue3 + OpenLayers 实战:圆孔相机模型推算卫星拍摄区域
vue.js·数码相机·vue·openlayers·geojson
踩着两条虫9 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
蓝冰凌11 小时前
Vue 3 中 defineExpose 的行为【defineExpose暴露ref变量】详解:自动解包、响应性与实际使用
前端·javascript·vue.js
奔跑的呱呱牛11 小时前
generate-route-vue基于文件系统的 Vue Router 动态路由生成工具
前端·javascript·vue.js
sp42a11 小时前
在 NativeScript-Vue 中实现流畅的共享元素转场动画
vue.js·nativescript·app 开发
还是大剑师兰特13 小时前
Vue3 中 computed(计算属性)完整使用指南
前端·javascript·vue.js
孜孜不倦不忘初心13 小时前
Ant Design Vue 表格组件空数据统一处理 踩坑
前端·vue.js·ant design
csdn_aspnet13 小时前
查看 vite 与 vue 版本
javascript·vue.js