如何为两个不同的生产版本使用不同的API端点?

时间:2019-01-16 07:15:24

标签: vue.js production-environment vue-cli-3

我需要生成两个生产版本。一种用于登台,另一种用于最终生产。我使用vue-cli-service build创建一个版本。我需要制作两个npm脚本,这些脚本将针对不同的情况使用不同的API端点。

以下是我导出api端点的文件。 src/config/index.js

import dev from "./dev.env.js";
import prod from "./prod.env.js";
let api
if (process.env.NODE_ENV === "production") {
  api = dev
}
if (process.env.NODE_ENV === "finalprod") {
  api = prod
}
export default api;

package.json脚本中,

"build": "vue-cli-service build",
"buildprod": "NODE_ENV=finalprod vue-cli-service build",

这似乎解决了问题。 但是问题在于,当环境更改为finalprod时,build命令不会生成生产构建。

我也检查了this url,但无法从中得到解决方案。

注意:

  1. 我没有CI / CD设置,因此服务器上没有任何环境。我只是在本地创建一个内部版本,然后使用ftp将内部版本上传到提供静态文件的服务器。
  2. 我使用命令vue create project-name
  3. 启动了该项目

1 个答案:

答案 0 :(得分:1)

这是您可以尝试解决的一种解决方案。

  1. 在vue项目的根目录中,创建一个环境文件:.env.finalprod.local
  

在您的环境文件中,您应该声明NODE_ENV=production,以便   它将以生产模式构建。

     

如果要指定其他自定义环境变量,请确保   给它加上VUE_APP_前缀,否则在构建时将被忽略。

它应该是这样的:

NODE_ENV=production
VUE_APP_API_ENDPOINT=YOUR_API_ENDPOINT_HERE

这意味着您必须为其他环境(例如.env.development.local.env.production.local)使用不同的API端点定义单独的环境文件。

  1. 按照下面的代码修改src/config/index.js
let api = process.env.VUE_APP_API_ENDPOINT;
export default api;
  1. 在您的package.json中,将脚本更改为此:

"buildprod": "vue-cli-service --mode finalprod"

这将在登台模式下构建一个生产应用程序,如果存在,将使用.env,.env.finalprod或.env.finalprod.local。

请注意,如果您拥有此脚本"buildprod": "vue-cli-service --mode finalprod",则还必须使用.finalprod来命名.env文件,例如.env.finalprod.local,否则cli无法找到它并且无法生成而不是生产模式下的应用。