【vue-cli3】vue.config.js中遇到的那些坑

本文介绍Vue CLI 3的配置方法,包括多页面配置、jQuery配置及copy-webpack-plugin插件的to属性修改技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue-cli升级到3.x版本之后,构建出来的项目比较简练,但是没有了webpack的显式配置,如果想要脚手架适用自己的项目,就需要配置vue.config.js,具体如何配置官网也给出了详细说明,可以参考官网vue.config.js配置项说明,以下为本人配置过程中遇到的一些坑,不对的地方或有更好的解决办法也希望大家能及时指出,欢迎大家一起探讨。
之前vue-cli2.x版本显式配置webpack的方法已经不行了,所有配置操作都需要在vue.config.js中配置,官网给出了两个配置webpack的选项

  • 简单配置:configureWebpack 选项
    • 比较简单,跟以前配置webpack一样
    • 通过 webapck-merge 的方式来合并(所以无法修改已经配置的选项)
  • 链式操作:chainWebpack 选项
    • 需要一定的学习成本,学习 webapck-chain 的操作,点击查看官网
    • 直接操作webapck,可以修改已经配置的选项

配置完之后可以通过 vue ui 命令打开 vue-cli3 提供的视图界面:任务 -> inspect 来检查 webpack 的配置,也可以使用 vue inspect 来查看某一项的配置。

1. 多页面配置

vue-cli3 提供了开箱即用的多页面配置,配置vue.config.js 中的 pages 选项即可,因为每增加一个页面就需要增加个选项,不可能自己每次都添加,考虑到借助工具来自动处理这些事情,所以单独配置了 MultiPage.config.js 文件,借助 node 来自动处理:

// MultiPage.config.js
// 多页面配置
const fs = require('fs');
const path = require('path');
const fileNames = fs.readdirSync(path.resolve(__dirname, './src/pages'));
const MutiPageConfig = {};

fileNames.forEach((pageName) => {
  MutiPageConfig[pageName] = {
    // page 的入口
    entry: `src/pages/${pageName}/index.js`,
    // 模板来源
    template: `src/pages/${pageName}/index.html`,
    // 在 dist 的输出
    filename: `views/${pageName}/index.html`,
    // 当使用 title 选项时,template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
    // title: '',
    // 在这个页面中包含的块,默认情况下会包含提取出来的通用 chunk 和 vendor chunk,如果自己有配置 splitChunks 选项,可以在此添加
    chunks: ['chunk-vendors', 'chunk-common', pageName]
  }
});

module.exports = MutiPageConfig;
复制代码

然后在 vue.config.js 中引入即可:

// 引入多页面配置文件
const MutiPageConfig = require('./MultiPage.config');
// multiple-pages 多页面模式下构建应用 
pages: MutiPageConfig,
复制代码

2. 配置 jquery

项目中用到了一些小的jquery插件,所以需要引入并配置jquery,该选项的配置,起初是通过 chainWebpack 来完成的:

chainWebpack: (config) => {
    // 添加expose-loader,此配置略显繁琐,使用configureWebpack来配置此项
    config.module
      .rule('expose1')
      .test(require.resolve('jquery'))
      .use('expose-loader')
      .loader('expose-loader')
      .options('jquery')
      .end();
    config.module
      .rule('expose2')
      .test(require.resolve('jquery'))
      .use('expose-loader')
      .loader('expose-loader')
      .options('$')
      .end()
    config.module
      .rule('expose3')
      .test(require.resolve('jquery'))
      .use('expose-loader')
      .loader('expose-loader')
      .options('jQuery')
      .end()
  },
复制代码

看上去比较麻烦,重复操作,后来想到 vue-cli3 中并未配置 expose-loader ,所以完全可以通过 configWebpack 来 merge 到之前的配置中,所以就做了如下修改:

configureWebpack: (config) => {
    // 设置别名
    config.resolve.alias['img'] = path.resolve(__dirname, '../src/assets/images');
    config.resolve.alias['styles'] = path.resolve(__dirname, '../src/assets/styles');
    
    // 添加 loader
    config.module.rules.push({
      // 处理jquery
      test: require.resolve('jquery'),
      use: [{
        loader: 'expose-loader',
        options: 'jquery'
      }, {
        loader: 'expose-loader',
        options: '$'
      }, {
        loader: 'expose-loader',
        options: 'jQuery'
      }]
    })
  }
复制代码

3. 无法修改 copy-webpack-plugin 插件的 to 属性来改变资源的保存路径

之前说过,想要修改 webpack 相关配置,需要使用 chainWebpack ,刚开始按照官网配置如下:

config.plugin('copy')
      .tap(args => {
        args[0].to = 'resource';
        return args;
      });
复制代码

无论如何配置不到,vue inspect 查看的配置一直是默认配置:


后来查看了 copy-webapck-plugin 插件的选项,才发现是自己的插件没有弄明白:

new CopyWebpackPlugin([patterns], options)
复制代码

有两个参数,第一个参数为数组,第二个为对象,是配置项,所以要修改第一项,其实是在修改一个二维数组,所以修改下配置:

config.plugin('copy')
      .tap(args => {
        args[0][0].to = 'resource';
        return args;
      });
复制代码

能正常修改配置:

未完待续...

### 回答1: vue-cli3 中的 vue.config.js 文件用于配置项目的 webpack 构建环境。可以在该文件中进行如下配置: - 修改 webpack 的配置项 - 配置 devServer - 配置代理 - 使用插件 示例: ``` module.exports = { devServer: { port: 8080, proxy: { &#39;/api&#39;: { target: &#39;http://localhost:3000&#39;, changeOrigin: true } } }, configureWebpack: { plugins: [ new MyAwesomeWebpackPlugin() ] } } ``` 其中,configureWebpack 配置项可以修改 webpack 的配置项,devServer 配置项可以配置开发服务器的相关选项,proxy 配置项可以配置代理。 注意:vue.config.js 文件不是必须的,如果项目中没有该文件,则使用默认配置。 ### 回答2: Vue CLI 3Vue.js的一个脚手架工具,用于快速构建Vue项目。vue.config.js是一个配置文件,它在项目构建过程中被调用,用于配置WebpackVue CLI的一些选项。 vue.config.js配置文件中可以设置很多选项,包括开发时代理、打包时的压缩和代码分割等等。下面是一些常用的选项: 1. publicPath publicPath是一个字符串,用于指定打包后的静态资源的路径。可以是相对路径或绝对路径,它的值会被Webpack在生成代码时加入到各个静态资源引用的URL中。 2. outputDir outputDir是一个字符串,用于指定打包后的输出目录。默认值是"dist"。 3. devServer devServer是一个对象,用于配置开发服务器。其中包括代理、端口号和自动打开浏览器等选项。可以用它来配置前后端联调、Mock服务等。 4. chainWebpack chainWebpack是一个函数,用于修改Webpack的配置。可以在其中添加、删除、修改各种Webpack配置项。举个例子,我们可以通过chainWebpack来关闭ESLint验证: ``` chainWebpack: config => { config.module .rule(&#39;eslint&#39;) .use(&#39;eslint-loader&#39;) .tap(options => { options.emitWarning = false return options }) } ``` 5. configureWebpack configureWebpack是一个对象或函数,用于向Webpack配置中添加内容。其中包括Entry和Output等选项。 6. optimization optimization是一个对象,用于配置打包时的优化选项,比如代码压缩等。 7. css css是一个对象,用于配置CSS的选项。其中包括分离CSS、压缩CSS、CSS的sourceMap等。 8. pluginOptions pluginOptions是一个对象,用于配置Vue CLI插件的选项。其中包括ESLint、Stylelint、PWA等。我们可以通过它来关闭ESLint验证: ``` pluginOptions: { eslint: { enable: false } } ``` 除了上面提到的常用选项,vue.config.js中还有很多其他配置项可供选择,具体可参考Vue CLI的官方文档。总的来说,vue.config.js是一个非常强大的工具,可以大大提高开发效率和优化打包结果。 ### 回答3Vue.js是目前非常流行的前端框架之一,它的灵活性和易用性受到了广大开发者的欢迎。其最新的版本Vue-cli3,提供了更加方便快捷的开发模式,同时其强大的配置功能也是特别值得注意的。Vue-cli3中的vue.config.js文件包含着许多重要的配置选项,下面我们来逐一介绍一下。 1. publicPath publicPath选项可以指定发布路径,通过配置publicPath选项,可以将Vue应用的资源文件发布到指定的位置,这样就方便我们在多个环境中部署Vue应用。例如,如果希望将Vue应用文件发布到“/my-app/”目录下,配置publicPath选项为“/my-app/”即可。 2. outputDir outputDir选项用于指定Vue应用的输出目录,通过配置outputDir选项,可以将Vue应用打包生成的文件输出到指定的目录下面。例如,如果希望将生成的文件输出到“/dist/”目录下,那么可以在vue.config.js文件中配置outputDir选项为“dist”。 3. devServer devServer选项用于配置开发服务器,对于Vue应用的开发来说,它非常重要。通过配置devServer选项,可以定制开发服务器的端口、代理等信息,使我们在开发Vue应用时能够更加方便地进行调试和测试。 4. lintOnSave lintOnSave选项用于在保存代码时自动检查语法错误和格式错误,让我们在开发过程中能够更加精细地把控代码质量。通过配置该选项,可以将Vue应用的代码自动规范,并保持统一的风格。 5. chainWebpack chainWebpack选项用于定制Webpack的配置,它可以让我们更加灵活地定制Vue应用的构建过程。通过配置该选项,可以添加自定义的Webpack插件,优化打包生成的文件等。 总之,Vue-cli3中的vue.config.js文件不仅提供了强大的配置功能,而且能够让我们更加方便地开发和部署Vue应用。掌握这些配置选项,能够让我们更加高效地进行Vue应用的开发和维护工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值