Gatsby 如何使用环境变量?
How are Environment Variables used with Gatsby?
在 GatsbyJS 的上下文中,应该如何使用环境变量?我已经阅读并重新阅读 official docs,但我仍然感到困惑。
具体来说:
- Gatsby 在执行
gatsby develop
时是否 自动 读取 .env.development
文件?
- 同理,做
gatsby build
时是否忽略.env.development
文件只读取.env.production
?
- 是否应该将
.env.development
和 .env.production
添加到 .gitignore
?
- 您是否应该手动将
.env.*
文件复制(例如通过scp
)到您的服务器?
我使用了 .env.development
和 .env.production
文件,但不需要 dotenv,因为我没有尝试将这些环境变量放入 node.js。我想要 JS 文件中的这些环境变量。
Q1) 是的。如果你在根目录下创建一个.env.development文件,添加这行代码IMG_URL=https://picsum.photos/200/300?image=1079
,然后在你的JS中添加这行代码<img src={'${process.env.IMG_URL}'} alt="" />
到render(){}
在你的一个反应组件中运行。然后gatsby develop
,你会看到图片
Q2) 看来是的。我创建了 .env.development
和 .env.production
文件,在开发文件中定义了一个变量,然后部署到生产环境。环境变量未在 .env.production 文件中定义。
Q3) 嗯,这可能取决于您的回购协议。如果它是 public 或私人的。以及文件的内容。如果您将 .env 文件用于 API URL 等。那很好,但是 Secrets 不应该在 .env 文件或 repo 中。
Q4) 我会说提交和部署通常是不同的。除非您在提交时设置了自动部署。我已将我的文件添加到我的 .gitignore,然后将我所有的本地文件复制到我的实时服务器。也许其他人对此有更好的答案。
也许这种方法更适合你alternative config去oliverbenns
评论
在 GatsbyJS 的上下文中,应该如何使用环境变量?我已经阅读并重新阅读 official docs,但我仍然感到困惑。
具体来说:
- Gatsby 在执行
gatsby develop
时是否 自动 读取.env.development
文件? - 同理,做
gatsby build
时是否忽略.env.development
文件只读取.env.production
? - 是否应该将
.env.development
和.env.production
添加到.gitignore
? - 您是否应该手动将
.env.*
文件复制(例如通过scp
)到您的服务器?
我使用了 .env.development
和 .env.production
文件,但不需要 dotenv,因为我没有尝试将这些环境变量放入 node.js。我想要 JS 文件中的这些环境变量。
Q1) 是的。如果你在根目录下创建一个.env.development文件,添加这行代码IMG_URL=https://picsum.photos/200/300?image=1079
,然后在你的JS中添加这行代码<img src={'${process.env.IMG_URL}'} alt="" />
到render(){}
在你的一个反应组件中运行。然后gatsby develop
,你会看到图片
Q2) 看来是的。我创建了 .env.development
和 .env.production
文件,在开发文件中定义了一个变量,然后部署到生产环境。环境变量未在 .env.production 文件中定义。
Q3) 嗯,这可能取决于您的回购协议。如果它是 public 或私人的。以及文件的内容。如果您将 .env 文件用于 API URL 等。那很好,但是 Secrets 不应该在 .env 文件或 repo 中。
Q4) 我会说提交和部署通常是不同的。除非您在提交时设置了自动部署。我已将我的文件添加到我的 .gitignore,然后将我所有的本地文件复制到我的实时服务器。也许其他人对此有更好的答案。
也许这种方法更适合你alternative config去oliverbenns
评论