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 可能会有不同的配置项和语法。

相关推荐
Howrun7773 小时前
VSCode烦人的远程交互UI讲解
ide·vue.js·vscode
小迷糊的学习记录6 小时前
Vuex 与 pinia
前端·javascript·vue.js
利刃大大6 小时前
【Vue】Element-Plus快速入门 && Form && Card && Table && Tree && Dialog && Menu
前端·javascript·vue.js·element-plus
小毛驴8507 小时前
Vue 路由示例
前端·javascript·vue.js
TT哇10 小时前
【实习 】银行经理端两个核心功能的开发与修复(银行经理绑定逻辑修复和线下领取扫码功能开发)
java·vue.js
星光不问赶路人11 小时前
vue3使用jsx语法详解
前端·vue.js
weixin79893765432...12 小时前
Vue 组件的更新过程(编译系统 + 响应式系统 + 虚拟 DOM & Diff)
vue.js
我是伪码农13 小时前
Vue 智慧商城项目
前端·javascript·vue.js
小书包酱13 小时前
在 VS Code中,vue2-vuex 使用终于有体验感增强的插件了。
vue.js·vuex
Zhencode14 小时前
Vue3 响应式依赖收集与更新之effect
前端·vue.js