vue.config.js全部详细配置

vue.config.js 是一个可选的配置文件,如果项目的根目录中没有这个文件,你需要手动创建它。这个文件是一个 Node.js 模块,会导出一个包含了 Vue CLI 项目配置的对象。

下面是一些常见的 vue.config.js 配置项:

基本路径

js 复制代码
module.exports = {  
  publicPath: './'  
}

输出目录

java 复制代码
javascript复制代码
	module.exports = {  

	  outputDir: 'dist'  

	}

放置生成的静态资源 (js、css、img、fonts)

java 复制代码
javascript复制代码
	module.exports = {  

	  assetsDir: ''  

	}

配置 webpack-dev-server 行为

markdown 复制代码
javascript复制代码
	module.exports = {  

	  devServer: {  

	    port: 8080, // 端口号  

	    open: true, // 自动打开浏览器  

	    hotOnly: false, // 热更新  

	    proxy: { // 配置跨域  

	      '/api': {  

	        target: '<url>',  

	        ws: true,  

	        changeOrigin: true  

	      },  

	      '/foo': {  

	        target: '<other_url>'  

	      }  

	    }  

	  }  

	}

配置 webpack

markdown 复制代码
javascript复制代码
	module.exports = {  

	  configureWebpack: {  

	    plugins: [  

	      // 配置插件  

	    ]  

	  },  

	  chainWebpack: config => {  

	    // 修改 webpack 配置  

	  }  

	}

CSS 相关配置

markdown 复制代码
javascript复制代码
	module.exports = {  

	  css: {  

	    loaderOptions: {  

	      sass: {  

	        prependData: `@import "@/styles/variables.scss";`  

	      }  

	    }  

	  }  

	}

配置 devtools

java 复制代码
javascript复制代码
	module.exports = {  

	  devtool: 'source-map'  

	}

生产环境构建

java 复制代码
javascript复制代码
	module.exports = {  

	  productionSourceMap: false, // 是否生成 sourceMap 文件  

	  parallel: require('os').cpus().length - 1, // 构建时启用多进程  

	  // 其他 webpack 配置...  

	}

配置 pwa

markdown 复制代码
javascript复制代码
	module.exports = {  

	  pwa: {  

	    name: 'My App',  

	    themeColor: '#4DBA87',  

	    msTileColor: '#000000',  

	    appleMobileWebAppCapable: 'yes',  

	    appleMobileWebAppStatusBarStyle: 'black',  

	    iconPaths: {  

	      favicon32: 'favicon.ico',  

	      favicon16: 'favicon.ico',  

	      appleTouchIcon: 'icons/apple-touch-icon-152x152.png',  

	      maskIcon: 'icons/safari-pinned-tab.svg',  

	      msTileImage: 'icons/msapplication-icon-144x144.png'  

	    }  

	  }  

	}

配置 Babel

markdown 复制代码
javascript复制代码
	module.exports = {  

	  babel: {  

	    presets: [  

	      // 预设配置  

	    ],  

	    plugins: [  

	      // 插件配置  

	    ]  

	  }  

	}

第三方插件配置

markdown 复制代码
javascript复制代码
	module.exports = {  

	  // 其他插件的配置  

	  pluginOptions: {  

	    // 例如配置 element-ui 插件  

	    elementUi: {  

	      size: 'small'  

	    }  

	  }  

	}

这些只是 vue.config.js 的一些常见配置项,实际上还有很多其他的配置项和细节可以调整。你可以根据项目的实际需求进行配置。

注意:上述示例中的 <url><other_url> 需要替换为你实际的 URL。同时,这些配置项并不一定都需要在你的 vue.config.js 文件中全部列出,你可以只选择你需要的配置项进行配置。

vue.config.js 中,configureWebpack 选项允许你修改内部的 Webpack 配置。这给了你很大的灵活性来添加或覆盖默认配置。

configureWebpack 的详细配置示例:

markdown 复制代码
javascript复制代码
	module.exports = {  

	  configureWebpack: {  

	    // 添加全局变量  

	    plugins: [  

	      new webpack.DefinePlugin({  

	        'process.env.VUE_APP_TITLE': JSON.stringify('My App')  

	      })  

	    ],  

	  

	    // 修改输出  

	    output: {  

	      // 输出目录(相对于 process.cwd() 或 outputDir)  

	      path: path.resolve(__dirname, 'dist'),  

	      // 文件名  

	      filename: '[name].[contenthash].js',  

	      // 其他的输出配置...  

	    },  

	  

	    // 修改模块解析规则  

	    resolve: {  

	      // 别名配置  

	      alias: {  

	        '@': path.resolve(__dirname, 'src')  

	      },  

	      // 其他的解析配置...  

	    },  

	  

	    // 修改模块规则  

	    module: {  

	      rules: [  

	        {  

	          test: /.vue$/,  

	          loader: 'vue-loader',  

	          options: {  

	            // vue-loader 配置项  

	            compilerOptions: {  

	              isCustomElement: tag => tag === 'my-custom-element'  

	            }  

	          }  

	        },  

	        // 其他规则...  

	      ]  

	    },  

	  

	    // 优化和性能  

	    optimization: {  

	      splitChunks: {  

	        chunks: 'all', // 对同步加载和异步加载的chunks都进行分割  

	      },  

	      minimize: true, // 开启压缩  

	    },  

	  

	    // 添加或覆盖 devtool 配置  

	    devtool: 'source-map',  

	  

	    // 修改其他 Webpack 配置项...  

	  }  

	}

在上面的示例中:

  • 使用 webpack.DefinePlugin 添加了一个全局变量 process.env.VUE_APP_TITLE
  • 修改了输出的目录和文件名。
  • 添加了别名配置,使得 @ 可以直接指向 src 目录。
  • .vue 文件加载器 vue-loader 进行了配置。
  • 启用了代码分割和压缩。
  • 设置了 source map。

你可以根据需要修改或添加更多的 Webpack 配置项。记住,任何你添加或修改的配置都应该遵循 Webpack 的配置规范。

请注意,configureWebpack 是一个对象,因此你可以在其中添加任何有效的 Webpack 配置。如果你想要完全替换掉默认的 Webpack 配置,可以使用 configureWebpack.rendererconfigureWebpack.server 字段分别针对客户端和服务器端进行配置。

最后,确保你使用的 Webpack 配置项与你的 Webpack 版本兼容,因为不同版本的 Webpack 可能会有不同的配置项和语法。

相关推荐
草梅友仁1 小时前
草梅 Auth 1.4.0 发布与 ESLint v9 更新 | 2025 年第 33 周草梅周报
vue.js·github·nuxt.js
萌萌哒草头将军3 小时前
Oxc 最新 Transformer Alpha 功能速览! 🚀🚀🚀
前端·javascript·vue.js
武昌库里写JAVA3 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习
littleding4 小时前
Vue3之计算属性
前端·vue.js
Juchecar4 小时前
采用 Vue 3 实现单页应用(SPA)与本地数据存储方案
前端·javascript·vue.js
congvee6 小时前
vue学习第3期 - 集成UI库
vue.js
前端小巷子8 小时前
Vue 事件绑定机制
前端·vue.js·面试
伍哥的传说8 小时前
Vue 3.5重磅更新:响应式Props解构,让组件开发更简洁高效
前端·javascript·vue.js·defineprops·vue 3.5·响应式props解构·vue.js新特性
菜牙买菜9 小时前
Hicharts入门
前端·vue.js·数据可视化
xvmingjiang9 小时前
Element Plus 中 el-input 限制为数值输入的方法
前端·javascript·vue.js