Vue前端vue.config.js简介

vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载,本文重点介绍VUE前端vue.config.js简介,感兴趣的朋友跟随小编一起看看吧

vue.config.js

vue项目的配置文件,需要严格遵照 JSON 的格式来写。结构如下:

module.exports = { // 选项... }

publicPath

部署应用包时的基本 URL。例如 https://www.my-app.com/,则publicPath
则为“/”,如果应用被部署在 https://www.my-app.com/my-app/,则设置 publicPath 为 /my-app/。

outputDir

当运行 vue-cli-service build 时生成的生产环境构建文件的目录。注意目标目录的内容在构建之前会被清除 (构建时传入 --no-clean 可关闭该行为)。

assetsDir

放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。

devServer

在开发环境下API 请求的代理到 API 服务器。这个问题可以通过 vue.config.js 中的 devServer.proxy 选项来配置。生产环境一般由Nginx负责。

process.env.VUE_APP_BASE_API

由于我们的项目需要在不同环境下进行运行(开发,生产,测试等),这避免我们需要多次的去切换请求的地址以及相关的配置,vue-cli2是可以直接在config文件中进行配置的,但是vue-cli4和vue-cli3已经简化了,没有config文件怎么办?

建立.env系列文件
首先我们在根目录新建3个文件,分别为.env.development,.env.production,.env.test
注意文件是只有后缀的。

.env.development 模式用于serve,开发环境,就是开始环境的时候会引用这个文件里面的配置

.env.production模式用于build,线上环境。

.env.test 测试环境

PS:vue.config.js详解

vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。你也可以使用 package.json 中的 vue 字段,但是注意这种写法需要你严格遵照 JSON 的格式来写。

这个文件应该导出一个包含了选项的对象:

// vue.config.js module.exports = { //默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 publicPath 为 /my-app/。 //这个值也可以被设置为空字符串 ('') 或是相对路径 ('./') publicPath: './', outputDir:"dist",//当运行 vue-cli-service build 时生成的生产环境构建文件的目录名字  默认为"dist" assetsDir: './static',//当运行 vue-cli-service build 时生成的生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录  默认为"",默认与生成的index.html同级 indexPath:"index.html",//npm run build之后生成的入口文件 默认为index.html,此属性可以省略,省略了默认就是index.html filenameHashing:true,//默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。然而,这也要求 index 的 HTML 是被 Vue CLI 自动生成的。如果你无法使用 Vue CLI 生成的 index HTML,你可以通过将这个选项设为 false 来关闭文件名哈希。 pages: { index: { // page 的入口 entry: 'src/index/main.js', // 模板来源 template: 'public/index.html', // 在 dist/index.html 的输出 filename: 'index.html', // 当使用 title 选项时, // template 中的 title 标签需要是 <%= htmlWebpackPlugin.options.title %> title: 'Index Page', // 在这个页面中包含的块,默认情况下会包含 // 提取出来的通用 chunk 和 vendor chunk。 chunks: ['chunk-vendors', 'chunk-common', 'index'] }, // 当使用只有入口的字符串格式时, // 模板会被推导为 `public/subpage.html` // 并且如果找不到的话,就回退到 `public/index.html`。 // 输出文件名会被推导为 `subpage.html`。 subpage: 'src/subpage/main.js' }, //lintOnSave: //1.是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码。这个值会在 @vue/cli-plugin-eslint 被安装之后生效。 //2.设置为 true 时,eslint-loader 会将 lint 错误输出为编译警告。默认情况下,警告仅仅会被输出到命令行,且不会使得编译失败。 //3.如果你希望让 lint 错误在开发时直接显示在浏览器中,你可以使用 lintOnSave: 'error'。这会强制 eslint-loader 将 lint 错误输出为编译错误,同时也意味着 lint 错误将会导致编译失败。 //4.或者,你也可以通过设置让浏览器 overlay 同时显示警告和错误: //module.exports = { //devServer: { //overlay: { //  warnings: true, //  errors: true //} //} //} lintOnSave:true, runtimeCompiler:false,//是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了,但是这会让你的应用额外增加 10kb 左右。 transpileDependencies:[],//默认情况下 babel-loader 会忽略所有 node_modules 中的文件。如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来。 productionSourceMap:true,//如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建   这玩意设置成false之后,能把打包后的文件大小减小80%   当时我的项目大小是8m+  设成false之后变成了2m+     productionSourceMap:false,之后,就不会生成map文件,map文件的作用在于:项目打包后,代码都是经过压缩加密的,如果运行时报错,输出的错误信息无法准确得知是哪里的代码报错。也就是说map文件相当于是查看源码的一个东西。如果不需要定位问题,并且不想被看到源码,就把productionSourceMap 置为false,既可以减少包大小,也可以加密源码。 crossorigin:"undefined",//设置生成的 HTML 中