configureWebpack与chainWebpack
共 1372字,需浏览 3分钟
·
2021-12-30 12:28
vue.config.js 中 configureWebpack 与 chainWebpack 区别
configureWebpack 和 chainWebpack的作用相同,唯一的区别就是它们修改 webpack 配置的方式不同:
configureWebpack 通过操作对象的形式,来修改默认的 webpack 配置,该对象将会被 webpack-merge 合并入最终的 webpack 配置。
chainWebpack 通过链式编程的形式,来修改默认的 webpack 配置。
configureWebpack
如果这个值是一个对象,则会通过 webpack-merge 合并到最终的配置中。
如果这个值是一个函数,则会接收被解析的配置作为参数。该函数既可以修改配置并不返回任何东西,也可以返回一个被克隆或合并过的配置版本。
如果你需要基于环境有条件地配置行为,或者想要直接修改配置,那就换成一个函数 (该函数会在环境变量被设置之后懒执行)。该方法的第一个参数会收到已经解析好的配置。在函数内,你可以直接修改配置,或者返回一个将会被合并的对象。
configureWebpack 不支持 vue cli 的语法糖或者说是不支持链式编程配置形式。只能通过操作对象的形式,来修改默认的 webpack 配置。
下面来看一下 configureWebpack 配置方式:
configureWebpack: {
resolve: {
// 别名配置
alias: {
'assets': '@/assets',
'common': '@/common',
'components': '@/components',
'network': '@/network',
'configs': '@/configs',
'views': '@/views',
'plugins': '@/plugins',
}
}
},
chainWebpack
Vue CLI 内部的 webpack 配置是通过 webpack-chain 维护的。这个库提供了一个 webpack 原始配置的上层抽象,使其可以定义具名的 loader 规则和具名插件,并有机会在后期进入这些规则并对它们的选项进行修改。
config
.plugin(name)
.use(WebpackPlugin, args)
参数说明:
name 是 webpack-chain 里的key,就是要加入的插件在 webpack-chain 配置里的 key ,就是我们自定义插件的名字,一般我们都保持跟插件名称相同。
WebpackPlugin 使用的 webpack 插件名,在这里,可以直接使用插件,无需进行实例化,就是不需要 new WebpackPlugin()
args 插件的参数信息。特别注意,args是一个数组,例如 [{},{}] 这种方式,可以配置多个插件实例。