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的表达能力更强,也更为安全。

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

相关推荐
customer0820 分钟前
【开源免费】基于SpringBoot+Vue.JS个人博客系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
乐多_L36 分钟前
使用vue3框架vue-next-admin导出表格excel(带图片)
前端·javascript·vue.js
初尘屿风1 小时前
基于微信小程序的电影院订票选座系统的设计与实现,SSM+Vue+毕业论文+开题报告+任务书+指导搭建视频
vue.js·微信小程序·小程序
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS打卡健康评测系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
合法的咸鱼1 小时前
uniapp 使用unplugin-auto-import 后, vue文件报红问题
前端·vue.js·uni-app
胡桃不是夹子2 小时前
vue登陆下拉菜单
前端·javascript·vue.js
BeanInJ2 小时前
当一个后端下载了一个VUE开源项目,怎么开始着手玩一下
前端·vue.js·开源
ONEPEICE-ing2 小时前
快速入门Springboot+vue——MybatisPlus多表查询及分页查询
前端·vue.js·spring boot·mybatis
一个处女座的程序猿O(∩_∩)O2 小时前
Django+Vue3全栈开发实战:从零搭建博客系统
vue.js·python·django·sqlite
丁总学Java4 小时前
Mac arm架构使用 Yarn 全局安装 Vue CLI
前端·javascript·vue.js