Blitz 内置了对环境变量的支持,你可以执行以下操作:
Blitz 内置支持将环境变量从 .env.local
加载到 process.env 中。
一个 .env.local
文件的示例:
DB_HOST=localhost
DB_USER=myuser
DB_PASS=mypassword
这样会将 process.env.DB_HOST
、process.env.DB_USER
和
process.env.DB_PASS
自动加载到 Node.js 环境中,从而允许你在服务器上使用
它们。
注意: Blitz 会自动在你的
.env*
文件中扩展变量。这使你可以引用其它 私密内容,比如:# .env HOSTNAME=localhost PORT=8080 HOST=http://$HOSTNAME:$PORT
如果你尝试在值中使用带有
$
的变量,则需要这样进行转义:\$
。例如:
# .env A=abc WRONG=pre$A # becomes "preabc" CORRECT=pre\$A # becomes "pre$A"
默认情况下,通过 .env
文件夹加载的所有环境变量仅在 Node.js 环境中可用,
这意味着它们不会向浏览器公开。
你可以通过这两种方式将变量公开给浏览器。
NEXT_PUBLIC_
前缀给变量加上前缀 NEXT_PUBLIC_
。例如:
NEXT_PUBLIC_ANALYTICS_ID=abcdefghijk
由于前缀 NEXT_PUBLIC_
,该值会被内联到发送给浏览器的 JavaScript 中。
// pages/index.js
import setupAnalyticsService from "../lib/my-analytics-service"
// NEXT_PUBLIC_ANALYTICS_ID can be used here as it's prefixed by NEXT_PUBLIC_
setupAnalyticsService(process.env.NEXT_PUBLIC_ANALYTICS_ID)
function HomePage() {
return <h1>Hello World</h1>
}
export default HomePage
blitz.config.js
中的 env
Blitz 配置中 env
中定义的任何键都将内联到发送给浏览器的 JavaScript 中。
// blitz.config.js
module.exports = {
// Env vars defined here will be PUBLIC and included in the client JS bundle
env: {
STRIPE_KEY: process.env.STRIPE_KEY,
SENTRY_DSN: process.env.SENTRY_DSN,
},
}
通常,只需要一个 .env.local
文件。但是,又是你可能想为 development
或
production
环境添加一些默认值。
Blitz 允许你在 .env
(所有环境)、.env.development
(开发
environment)、.env.production
(生产环境)和.env.test
(测试
environment) 中设置默认值。这些具有默认值的文件应该被 Git 跟踪。`
附加上 .local
结尾的将会覆盖默认值。例如 .env.local
和
.env.test.local
。这些文件不应该被 git 跟踪。