58ff8aa0c6fb58e290a5e1d5798ae574.png

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是一个数组,例如 [{},{}] 这种方式,可以配置多个插件实例。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐