vue.config.js

vue.config.js

1、publicPath (重点)

  • Type: string
  • Default: ‘/’

默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/, 则设置 publicPath 为 /my-app/。

这个会值也可以被设置为空字符串(”“)或是相对路径(”./"), 这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径。

module.exports = {
	publicPath: process.env.NODE_ENV === 'production' ? './' : '/'
}

相对 publicPath 的限制

相对路径的 publicPath 有一些使用上的限制。在以下情况下,应当避免使用相对 publicPath:

  • 当使用基于 HTML5 history.pushState 的路由时;

  • 当使用 pages 选项构建多页面应用时。

    * 解决 Vue 项目打包后打开一片空白:

  • 第一步: 注释路由中的 mode: ‘history’

  • 第二步: vue.config.js 中配置: publicPath: process.env.NODE_ENV === “production” ? ‘./’ : ‘/’

2、indexPath (了解)

  • Type: string
  • Default: ‘index.html’

指定生成的 index.html 的输出路径(相对于 outputDir)。也可以是一个绝对路径。

3、filenameHashing (了解)

  • Type:boolean
  • Default: true

默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。然而,这也要求 index 的 HTML 是被 Vue CLI 自动生成的。如果你无法使用 Vue CLI 生成的 index.html,你可以通过将这个选项设为 false 来关闭文件名哈希

4、lintOnSave (熟悉)

  • Type: boolean | ‘warning’ | ‘default’ | ‘error’
  • Default: ‘Default’

是否在开发环境下通过 eslint-loader 在每次保存 lint 代码。这个值会在 @vue/cli-plugin-eslint 被安装之后生效。

设置为 true 或 ‘warning’ 时,eslint-loader 会将 lint 错误输出为编译警告。默认情况下,警告仅仅会被输出到命令行,且不会使得编译失败。

如果你希望让 lint 错误在开发时直接显示在浏览器中,你可以使用 lintOnSave:‘default’。这会强制 eslint-loader 将 lint 错误输出为编译失败。同时也意味着 lint 错误将会导致编译失败。

设置为 error 将会使得 eslint-loader 把 lint 警告也输出为编译错误,这意味着 lint 警告将会导致编失败。

当 lintonSave 是一个 truthy 的值时,eslint-loader 在开发和生产构建下都会被启用。如果你想要在生产构建时禁用 eslint-loader, 你可以用如下配置:

//vue.config.js
module.exports = {
	lintOnSave: process.env.NODE_ENV !== 'production'
}

5、devServer (重点)

  • Type: Object

所有 webpack-dev-server 的选项都支持。注意:

  • 有些值像 host、port 和 https 可能会被命令行参数覆写。
  • 有些值像 publicPath 和 historyApiFallback 不应该被修改,因为它们需要和开发服务器的 publicPath 同步以保障正常的工作。

* Proxy

type: string | Object

如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器。这个问题 (说白了就是跨域的解决方案)可以通过 vue.config.js 中的 deserver.prosy 选项来配置。

deserver.proxy 可以是一个指向开发环境 API 服务吕的字符串:

module.exports = {
    devServeeer: {
		proxy: 'http://localhost:4000'  //这里假设项目端口号非4000,而后端端口号为4000,从而造成了跨域
    }
}

这是针对单个接口地址的描述,也可以说是一种简单写方式,完整且多个接口地址的写法:

module.exports = {
	deServer: {
		proxy: {
			'/api': {
				target: '<url>',
				changeOrigin: true,
				pathRewrite: {
				'^/api': "/"
				}
			},
			'/foo': {
				target: '<other_url>'
			}
		}
	}
}

注意这里面 /api 是你自己定义的, 写成什么都可以。target 设置你调用的接口域名和端口号。这里理解成用 ^/api 代替 target 里面的地址,后面组件中我们调接口时直接用 api 代替。 比如我要高用 http://codesohigh.com/hello ,直接写 /api/hello 即可。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值