Vue.js 如何为两个不同的生产构建使用不同的API端点?

Vue.js 如何为两个不同的生产构建使用不同的API端点?,vue.js,production-environment,vue-cli-3,Vue.js,Production Environment,Vue Cli 3,我需要生成两个生产版本。一个用于分期生产,一个用于最终生产。我使用vue cli服务构建创建构建。我需要的是制作两个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 === "

我需要生成两个生产版本。一个用于分期生产,一个用于最终生产。我使用
vue cli服务构建
创建构建。我需要的是制作两个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
命令不会生成生产版本

我也检查了,但无法从中获得解决方案

注:
  • 我没有CI/CD设置,因此服务器中没有任何env。我只是在本地创建了一个构建,并使用
    ftp
    将构建上传到提供静态文件的服务器
  • 我使用命令
    vue create project name

  • 这里有一个解决方案,你可以尝试解决它

  • 在vue项目根目录中,创建一个env文件:
    .env.finalprod.local
  • 在env文件中,您应该声明
    NODE\u env=production
    ,以便 它将建立在生产模式

    如果要指定其他自定义环境变量,请确保 以
    VUE\u APP\uu
    作为前缀,否则在生成时将忽略它

    下面是它的外观:

    NODE_ENV=production
    VUE_APP_API_ENDPOINT=YOUR_API_ENDPOINT_HERE
    
    这意味着您必须为其他环境定义单独的环境文件,例如
    .env.development.local
    .env.production.local
    ,如果它们使用不同的API端点

  • 修改
    src/config/index.js
    ,类似于下面的代码
  • package.json
    中,将脚本更改为:
  • “buildprod”:“vue cli服务--模式finalprod”

    这将在暂存模式下构建生产应用程序,如果存在,将使用.env、.env.finalprod或.env.finalprod.local


    请注意,如果您有以下脚本
    “buildprod”:“vue cli服务--模式finalprod”
    ,则您还必须使用
    .finalprod
    命名.env文件,例如
    .env.finalprod.local
    ,否则cli将找不到它,也不会在生产模式下生成您的应用程序。

    这里有一个解决方案,您可以尝试解决它

  • 在vue项目根目录中,创建一个env文件:
    .env.finalprod.local
  • 在env文件中,您应该声明
    NODE\u env=production
    ,以便 它将建立在生产模式

    如果要指定其他自定义环境变量,请确保 以
    VUE\u APP\uu
    作为前缀,否则在生成时将忽略它

    下面是它的外观:

    NODE_ENV=production
    VUE_APP_API_ENDPOINT=YOUR_API_ENDPOINT_HERE
    
    这意味着您必须为其他环境定义单独的环境文件,例如
    .env.development.local
    .env.production.local
    ,如果它们使用不同的API端点

  • 修改
    src/config/index.js
    ,类似于下面的代码
  • package.json
    中,将脚本更改为:
  • “buildprod”:“vue cli服务--模式finalprod”

    这将在暂存模式下构建生产应用程序,如果存在,将使用.env、.env.finalprod或.env.finalprod.local

    请注意,如果您有此脚本
    “buildprod”:“vue cli服务--mode finalprod”
    ,则您还必须使用
    .finalprod
    命名.env文件,例如
    .env.finalprod.local
    ,否则cli将无法找到它,并且不会在生产模式下生成您的应用程序