在我gatsby-config.js
我使用dotenv
包设置env vars
require("dotenv").config({
path: `.env.${process.env.DEPLOY_ENV}`,
});
然后在我的package.json
脚本中部署到不同的环境
"deploy:staging": "DEPLOY_ENV=staging gatsby build --prefix-paths && s3-deploy ..."
在我的src/html.js
中,我有一个我想要包含的资产
<script src={`//${process.env.ASSET_HOST}/app.js`}></script>
当我从DEPLOY_ENV
记录gatsby-config.js
时,它设置为staging
,但是,当我在process.env
src/html.js
中记录ASSET_HOST
时设置为.env.production
文件中的一个,因此当我部署到暂存时,它会使用我的生产主机中的资源。
答案 0 :(得分:0)
我认为DEPLOY_ENV
(作为NODE_ENV
)是一个保留的环境变量。这就是为什么DEPLOY_ENV=staging
在您的情况下不起作用的原因。
使用辅助环境变量进行额外环境支持的Gatsby docs on environment variables建议。
您可以在根文件夹中添加.env.staging
文件,放置ASSET_HOST
env var。
然后使用ACTIVE_ENV=staging gatsby develop