taro怎么配置多个环境

Created on 12 Nov 2019  ·  21Comments  ·  Source: NervJS/taro

问题描述
taro怎么配置多个环境?多个环境的不同变量?

复现步骤

期望行为
开发时存在多个环境,包括开发环境、测试环境、准生产环境、生产环境,在taro中如何配置不同的打包命令来区分多个环境?就像vue中的.env.dev .env.test .env.uat .env.prod等环境变量

报错信息

系统信息

question

All 21 comments

欢迎提交 Issue~

如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏

如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。

Good luck and happy coding~

CC @luckyadam

我是自己在启动命令里面加了SERVER_ENV等变量

taro内部的处理逻辑是:加watch就是测试环境,不加watch就是生产环境

taro内部的处理逻辑是:加watch就是测试环境,不加watch就是生产环境

+1

你也可以在 config 里新增配置文件,然后 index.js 里引用它,再配置一下 env 给它个环境变量

@luckyadam @Qiyu8 @shenghanqin
是这样的吗?

// 新建uat文件
module.exports = {
  env: {
    NODE_ENV: '"uat"'
  },
  ......
}
// index.js
module.exports = function (merge) {
  console.log(process.env.NODE_ENV)
  if (process.env.NODE_ENV === 'development') {
    return merge({}, config, require('./dev'))
  }
  if (process.env.NODE_ENV === 'uat') {
    return merge({}, config, require('./uat'))
  }
  return merge({}, config, require('./prod'))
}

在package.json怎么配置打包命令?
比如我想添加: "uat:h5": "taro build --type h5 --watch" 这个命令如何配置呢?

Hello~

您的问题楼上已经有了确切的回答,如果没有更多的问题这个 issue 将在 15 天后被自动关闭。

如果您在这 15 天中更新更多信息自动关闭的流程会自动取消,如有其他问题也可以发起新的 Issue。

Good luck and happy coding~

问题描述
taro怎么配置多个环境?多个环境的不同变量?

复现步骤

期望行为
开发时存在多个环境,包括开发环境、测试环境、准生产环境、生产环境,在taro中如何配置不同的打包命令来区分多个环境?就像vue中的.env.dev .env.test .env.uat .env.prod等环境变量

报错信息

系统信息

老哥,这个问题解决了么?

没有解决...

taro的环境变量env是枚举值,只有development和production两种,设置为uat时,打包会报错。只能设置另外的变量值来区分了~

我是自己在启动命令里面加了SERVER_ENV等变量

如何在启动项目的时候添加?

taro的环境变量env是枚举值,只有development和production两种,设置为uat时,打包会报错。只能设置另外的变量值来区分了~

请问如何添加 我自己写了一条命令

"build-test:weapp": "taro build --type weapp --server a",

但是在 process.env.server 中获得的还是 undefined

请问 这个问题 解决了吗?我在script设置环境变量,打印出来的结果还NODE_ENV的结果一样。

请问 这个问题 解决了吗?我在script设置环境变量,打印出来的结果还NODE_ENV的结果一样。

我用了cross-env 解决了

请问 这个问题 解决了吗?我在script设置环境变量,打印出来的结果还NODE_ENV的结果一样。

我用了cross-env 解决了

大佬是怎么写的呢?
我是这样写的
"test": "cross-env API_ENV=test npm run build:weapp -- --watch",
然后打印 process.env.API_ENV结果是development

请问 这个问题 解决了吗?我在script设置环境变量,打印出来的结果还NODE_ENV的结果一样。

我用了cross-env 解决了

大佬是怎么写的呢?
我是这样写的
"test": "cross-env API_ENV=test npm run build:weapp -- --watch",
然后打印 process.env.API_ENV结果是development

这样试下?
npm run test
"test": "npm run build:test -- --watch"
"build:test": "cross-env API_ENV=test taro build --type weapp",

请问 这个问题 解决了吗?我在script设置环境变量,打印出来的结果还NODE_ENV的结果一样。

我用了cross-env 解决了

大佬是怎么写的呢?
我是这样写的
"test": "cross-env API_ENV=test npm run build:weapp -- --watch",
然后打印 process.env.API_ENV结果是development

这样试下?
npm run test
"test": "npm run build:test -- --watch"
"build:test": "cross-env API_ENV=test taro build --type weapp",

undefined

请问 这个问题 解决了吗?我在script设置环境变量,打印出来的结果还NODE_ENV的结果一样。

我用了cross-env 解决了

大佬是怎么写的呢?
我是这样写的
"test": "cross-env API_ENV=test npm run build:weapp -- --watch",
然后打印 process.env.API_ENV结果是development

这样试下?
npm run test
"test": "npm run build:test -- --watch"
"build:test": "cross-env API_ENV=test taro build --type weapp",

undefined

项目文件 config>dev && config>prod

image

图裂开了,大佬

请问 这个问题 解决了吗?我在script设置环境变量,打印出来的结果还NODE_ENV的结果一样。

我用了cross-env 解决了

大佬是怎么写的呢?
我是这样写的
"test": "cross-env API_ENV=test npm run build:weapp -- --watch",
然后打印 process.env.API_ENV结果是development

这样试下?
npm run test
"test": "npm run build:test -- --watch"
"build:test": "cross-env API_ENV=test taro build --type weapp",

undefined

项目文件 config>dev && config>prod
image

图裂开了,大佬

额 你要在项目配置文件里设置才有值的 就在那两个文件里添加设置 PAGE_ENV: process.env.API_ENV?"${process.env.API_ENV}":'"other"',

process.env.API_ENV?"${process.env.API_ENV}":'"other"',

成功了,谢谢🙏啦!!!

cross-env 直接就可以解决,感谢

Was this page helpful?
0 / 5 - 0 ratings