常用的vue.config.js配置示例

在这里插入图片描述

查看本专栏目录


关于作者

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信,一起交流。

No.大剑师精品GIS教程推荐
0地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】
1Openlayers 【入门教程】 - 【源代码+示例 300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3MapboxGL【入门教程】 - 【源代码+图文示例150+】
4Cesium 【入门教程】 - 【源代码+综合教程 200+】
5threejs【中文API】 - 【源代码+图文示例200+】
6Shader 编程 【图文示例 100+】
7Geoserver 【配置教程 100+】
8卫星应用开发教程 【配置+应用教程 100+】
9GIS数字孪生与大模型 【应用实战 100+】
10报表与数字大屏 【Echarts 实战示例】 - 【D3 综合教程】 - 【其他大屏】

vue.config.js 是 Vue CLI 项目中的一个可选配置文件,用于对项目的构建和开发环境进行自定义配置。它是一个可选的配置文件,位于项目的根目录下。如果存在该文件,Vue CLI 会自动加载并应用其中的配置。

在这里插入图片描述

以下是 vue.config.js 中所有可能的功能和配置项的详细列表及说明:


1. 基础配置

module.exports = {
  // 部署应用包时的基本 URL(默认为 '/')
  publicPath: process.env.NODE_ENV === 'production' ? '/prod/' : '/',

  // 输出文件目录(默认为 'dist')
  outputDir: 'dist',

  // 静态资源目录(相对于 outputDir,默认为 '')
  assetsDir: '',

  // 指定生成的 index.html 的文件名(默认为 'index.html')
  indexPath: 'index.html',

  // 是否在开发环境下启用 source map(默认为 true)
  productionSourceMap: false,

  // 是否在保存时使用 `eslint-loader` 进行代码检查(默认为 true)
  lintOnSave: process.env.NODE_ENV !== 'production',
};

2. 开发服务器配置

module.exports = {
  // 开发服务器配置
  devServer: {
    host: '0.0.0.0', // 指定主机地址
    port: 8080,      // 指定端口号
    https: false,    // 是否启用 HTTPS
    open: true,      // 自动打开浏览器
    proxy: {         // 设置代理
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
        pathRewrite: { '^/api': '' },
      },
    },
    hot: true,       // 启用热更新
    watchOptions: {  // 监听文件变化选项
      poll: 1000,    // 每秒检查一次文件变化
      ignored: /node_modules/, // 忽略 node_modules 文件夹
    },
  },
};

3. Webpack 配置

Vue CLI 内部已经预设了 Webpack 配置,但可以通过 configureWebpackchainWebpack 进行扩展或修改。

a. 使用 configureWebpack
module.exports = {
  configureWebpack: {
    // 新增插件或规则
    plugins: [],
    module: {
      rules: [
        {
          test: /\.txt$/,
          use: 'raw-loader',
        },
      ],
    },
  },
};
b. 使用 chainWebpack
module.exports = {
  chainWebpack: (config) => {
    // 修改现有规则
    config.module
      .rule('images')
      .use('url-loader')
      .loader('url-loader')
      .tap((options) => {
        options.limit = 10000;
        return options;
      });
  },
};

4. CSS 配置

module.exports = {
  css: {
    // 是否提取 CSS 到独立文件中(生产环境下默认为 true)
    extract: true,

    // 是否开启 CSS source map(默认为 false)
    sourceMap: false,

    // CSS 预处理器的选项
    loaderOptions: {
      sass: {
        additionalData: `@import "@/styles/variables.scss";`,
      },
      less: {
        globalVars: {
          primary: '#333',
        },
      },
    },

    // 是否将所有 CSS 应用到全局(默认为 false)
    requireModuleExtension: true,
  },
};

5. PWA 配置

module.exports = {
  pwa: {
    name: 'My App',               // 应用名称
    themeColor: '#4DBA87',        // 主题颜色
    msTileColor: '#000000',       // Windows 磁贴颜色
    appleMobileWebAppCapable: 'yes', // iOS 是否全屏
    appleMobileWebAppStatusBarStyle: 'black', // iOS 状态栏样式
    workboxPluginMode: 'GenerateSW', // Workbox 插件模式
    workboxOptions: {},           // Workbox 配置
  },
};

6. 插件配置

module.exports = {
  pluginOptions: {
    // 自定义插件选项
    foo: {
      bar: 'baz',
    },
  },
};

7. 其他配置

module.exports = {
  // 是否启用多页模式
  pages: {
    index: {
      entry: 'src/main.js',
      template: 'public/index.html',
      filename: 'index.html',
    },
    subpage: {
      entry: 'src/subpage.js',
      template: 'public/subpage.html',
      filename: 'subpage.html',
    },
  },

  // 是否启用并行构建(默认为 true)
  parallel: require('os').cpus().length > 1,

  // 是否禁用 ESLint 校验
  lintOnSave: false,

  // 是否启用现代模式(Modern Mode)
  modern: process.env.NODE_ENV === 'production',
};

总结

vue.config.js 提供了非常灵活的配置选项,可以根据项目需求调整构建、开发环境、Webpack 和 CSS 等相关设置。通过这些功能,开发者可以更高效地管理 Vue 项目,满足各种复杂的业务需求。

如果你需要进一步了解某个具体配置项,可以参考 Vue CLI 官方文档 获取更多细节。

### Vue 3.0 中 `vue.config.js` 的常用配置项详解 在 Vue 3.0 中,`vue.config.js` 是一个可选的配置文件,用于对项目进行自定义配置。以下是该文件中常见的配置项及其详细说明: --- #### 1. **`outputDir` 和 `assetsDir`** - **`outputDir`**:指定生成文件的目录,默认为 `dist`。 - **`assetsDir`**:指定静态资源(如图片、字体等)相对于 `outputDir` 的目录。 ```javascript module.exports = { outputDir: 'build', // 输出目录改为 build assetsDir: 'static' // 静态资源目录改为 static }; ``` 此配置项允许开发者灵活调整构建输出路径[^1]。 --- #### 2. **`devServer`** - 配置开发服务器的行为,例如端口号、代理设置等。 ```javascript module.exports = { devServer: { port: 8081, // 设置开发服务器端口 proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true, pathRewrite: { '^/api': '' } } } } }; ``` 通过 `proxy` 可以解决开发环境下的跨域问题[^1]。 --- #### 3. **`configureWebpack` 和 `chainWebpack`** - **`configureWebpack`**:直接向 Webpack 配置添加额外的选项。 - **`chainWebpack`**:使用链式 API 修改 Webpack 配置。 ```javascript const path = require('path'); module.exports = { configureWebpack: { resolve: { alias: { '@': path.resolve(__dirname, 'src') } } }, chainWebpack: config => { config.module .rule('graphql') .test(/\.graphql$/) .use('graphql-tag/loader') .loader('graphql-tag/loader'); } }; ``` `chainWebpack` 提供了更灵活的配置方式,适合复杂的项目需求[^1]。 --- #### 4. **`publicPath`** - 指定应用的公共路径,默认为 `/`。如果部署到子路径或 CDN 上,需要调整此值。 ```javascript module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/app/' : '/' }; ``` 此配置项对于生产环境下的路径管理尤为重要[^1]。 --- #### 5. **`pages`** - 配置多页面应用中的每个页面入口。 ```javascript module.exports = { pages: { index: { entry: 'src/index/main.js', template: 'public/index.html', filename: 'index.html' }, admin: { entry: 'src/admin/main.js', template: 'public/admin.html', filename: 'admin.html' } } }; ``` 通过 `pages`,可以轻松实现多页面应用的构建[^1]。 --- #### 6. **`parallel`** - 是否启用多线程加载器处理,加速构建过程。 ```javascript module.exports = { parallel: true }; ``` 此选项在大型项目中尤其有用,能够显著提升构建性能[^1]。 --- #### 7. **`css`** - 配置 CSS 相关选项,包括是否提取为单独文件、是否启用 source map 等。 ```javascript module.exports = { css: { extract: true, // 生产环境下将 CSS 提取为单独文件 sourceMap: false, // 不生成 source map 文件 loaderOptions: { sass: { additionalData: `@import "@/styles/_variables.scss";` } } } }; ``` `css.loaderOptions` 可用于向 CSS 预处理器传递额外选项。 --- #### 8. **`pluginOptions`** - 为插件提供自定义选项。 ```javascript module.exports = { pluginOptions: { i18n: { locale: 'en', fallbackLocale: 'en', localeDir: 'locales' } } }; ``` 此配置项通常用于与第三方插件集成。 --- #### 9. **`transpileDependencies`** - 指定需要被 Babel 转译的依赖。 ```javascript module.exports = { transpileDependencies: ['some-package'] }; ``` 某些依赖可能包含 ES6+ 语法,需要通过此选项显式转译[^1]。 --- ### 示例完整配置 以下是一个完整的 `vue.config.js` 配置示例: ```javascript const path = require('path'); module.exports = { outputDir: 'dist', assetsDir: 'static', publicPath: '/', devServer: { port: 8081, proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true } } }, configureWebpack: { resolve: { alias: { '@': path.resolve(__dirname, 'src') } } }, chainWebpack: config => { config.module .rule('graphql') .test(/\.graphql$/) .use('graphql-tag/loader') .loader('graphql-tag/loader'); }, css: { extract: true, sourceMap: false, loaderOptions: { sass: { additionalData: `@import "@/styles/_variables.scss";` } } }, pluginOptions: { i18n: { locale: 'en', fallbackLocale: 'en', localeDir: 'locales' } }, transpileDependencies: ['some-package'] }; ``` --- ###
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是大剑师兰特

打赏一杯可口可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值