Next.js env 文件取决于部署阶段

Pav*_*mar 6 next.js

例如,假设我正在不同的环境中部署 Next.js。

  1. 地方发展
  2. 分阶段部署
  3. 生产部署

以前,我将.env文件与其中一个框架一起使用,我可以轻松地将文件命名为.env.local, .env.stage& .env.prod,当我在本地运行节点应用程序时,它会加载.env.localexport STAGE=stage框架会使用.env.stage,就像生产时一样。

Next js 中是否有这样的支持,我可以.env在不同的阶段使用不同的文件。如果支持,那么我将如何指定 Next.js 正在运行哪个阶段。

bar*_*cho 1

你可以有不同的环境,只需要遵循这个

用于生产

// .env.production.local
// This file is for production and run with next start or npm run start
// NODE_ENV=production
Run Code Online (Sandbox Code Playgroud)

为了发展

// .env.development.local
// This file is for development and run when next dev or npm run dev
// NODE_ENV=development
Run Code Online (Sandbox Code Playgroud)

用于测试

// .env.test.local
// This file is for tests with jest or cypress for example
// NODE_ENV=test
Run Code Online (Sandbox Code Playgroud)

如果您想了解更多信息,这里是有关 next js 中环境的完整信息

更新:

如果您想在没有下一个标准的情况下运行更多环境,您可以手动执行此操作:

// package.json
"scripts": {
  ...
  "dev:staging": "APP_ENV=staging next dev",
}
...


// next.config.js
require('dotenv-flow').config({
  node_env: process.env.APP_ENV || process.env.NODE_ENV || 
   'development',
});

const env = {};
Object.keys(process.env).forEach((key) => {
  if (key.startsWith('NEXT_PUBLIC_')) {
    env[key] = process.env[key];
  }
});

module.exports = {
  env,
};
Run Code Online (Sandbox Code Playgroud)

当您运行 npm run/yarn dev:staging 时,将加载 .env.staging.local 中的暂存环境,我的参考来自 Flybayer,您可以在此处阅读更多信息