taro 3.6.11 webpack5 env环境变量设置 #14330
SilentFlute
started this conversation in
Feature Request
Replies: 2 comments 3 replies
-
既然升级了就用这个吧。 |
Beta Was this translation helpful? Give feedback.
3 replies
-
自己尝试了下使用模式来设置环境变量, 这里也记录一下:
//...
"scripts": {
"dev:weapp": "npm run build:weapp -- --watch",
"production:weapp": "npm run build:weapp -- --mode production",
"test:weapp": "npm run build:weapp -- --mode test"
},
//...
TARO_APP_BASE_URL=modeDev
TARO_APP_BASE_URL=modeTest
TARO_APP_BASE_URL=modeProduction
console.log('process.env.NODE_ENV:', process.env.NODE_ENV);
console.log('process.env.TARO_APP_BASE_URL:', process.env.TARO_APP_BASE_URL);
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
我第一次用
taro
是3.4.9
, 那个时候是直接设置NODE_ENV
以及在项目中直接使用process.env.xxx
, 这回使用taro
发现已经更新到了3.6.11
, 于是尝试了下, 结果发现环境变量把我给难住了, 多方查找和尝试之后解决, 遂分享出来, 以期帮助到更多的人以下是我个人处理环境变量问题的步骤:
cross-env
:yarn add cross-env --dev
package.json
中的script
, 例如:这里我设置了一个自己的环境变量, 叫
PROJECT_ENV
, 这个名字可以随意config/dev.ts
:config/prod.ts
:新建
config/test.ts
并写入如下内容:然后还有最关键的一步: 修改
config/index.ts
中最末尾的内容:各命令及其对应的打印结果如下:
然后需要注意的是,
process.env.xxx
的写法只能用于process.env.NODE_ENV
, 其他时候会报错:process is not defined
, 比如这里如果打印process.env.PROJECT_ENV
就会报错了以及这里我的
NODE_ENV
始终只有两个值:development
和production
, 是因为webpack5
的mode
就3个:string = 'production': 'none' | 'development' | 'production'
, 文档在这: https://webpack.js.org/configuration/mode/, 而且小程序打包, 我的预期是包尽可能的小以及各个依赖的行为应该更像生产环境, 毕竟我这里做区分主要是为了接口的baseUrl
以及貌似要把
process.env.NODE_ENV
设置为test
也行, 此时修改config/test.ts
中的NODE_ENV
为'"test"'
就行了, 此时yarn test:weapp
的时候打印出来的process.env.NODE_ENV
就是test
了, 但这时候会看到终端中会输出一个这个:同时也看不到这个了:
那是不是意味着
NODE_ENV
其实还是production
呢? 这我就不懂了, 希望了解的朋友能给解答一下, 感谢相关帖子:
Taro v3.3.19 build H5 设置env development编译报错
Taro 3.5.7 无法获取到process变量
Beta Was this translation helpful? Give feedback.
All reactions