Vue.config常用配置项

本文深入解析Vue项目的配置细节,涵盖从基本路径设置到webpack配置,包括sourceMap、css分离插件、多环境配置、别名设定及devServer代理配置等关键内容。

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

const path = require('path')
 
module.exports = {
    publicPath: './', // 基本路径
    outputDir: 'dist', // 输出文件目录
    lintOnSave: false, // eslint-loader 是否在保存的时候检查
    // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
    // webpack配置
    chainWebpack: (config) => {
    },
    configureWebpack: (config) => {
        if (process.env.NODE_ENV === 'production') {
            // 为生产环境修改配置...
            config.mode = 'production'
        } else {
            // 为开发环境修改配置...
            config.mode = 'development'
        }
        Object.assign(config, {
            // 开发生产共同配置
            resolve: {
                alias: {
                    '@': path.resolve(__dirname, './src'),
                    '@c': path.resolve(__dirname, './src/components'),
                    '@p': path.resolve(__dirname, './src/pages')
                } // 别名配置
            }
        })
    },
    productionSourceMap: false, // 生产环境是否生成 sourceMap 文件
    // css相关配置
    css: {
        extract: true, // 是否使用css分离插件 ExtractTextPlugin
        sourceMap: false, // 开启 CSS source maps?
        loaderOptions: {
            css: {}, // 这里的选项会传递给 css-loader
            postcss: {} // 这里的选项会传递给 postcss-loader
        }, // css预设器配置项 详见https://cli.vuejs.org/zh/config/#css-loaderoptions
        modules: false // 启用 CSS modules for all css / pre-processor files.
    },
    parallel: require('os').cpus().length > 1, // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用,仅作用于生产构建。
    pwa: {}, // PWA 插件相关配置 see https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
    // webpack-dev-server 相关配置
    devServer: {
        open: process.platform === 'darwin',
        host: '0.0.0.0', // 允许外部ip访问
        port: 8022, // 端口
        https: false, // 启用https
        overlay: {
            warnings: true,
            errors: true
        }, // 错误、警告在页面弹出
        proxy: {
            '/api': {
                target: 'http://www.baidu.com/api',
                changeOrigin: true, // 允许websockets跨域
                // ws: true,
                pathRewrite: {
                    '^/api': ''
                }
            }
        } // 代理转发配置,用于调试环境
    },
    // 第三方插件配置
    pluginOptions: {}
}

 

### 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'] }; ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值