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

tv6aics1  于 2023-08-04  发布在  其他
关注(0)|答案(2)|浏览(114)

例如,假设我正在不同的env中部署Next.js。
1.地方发展
1.分段部署
1.生产部署
以前我用.env文件与其中一个框架,我可以很容易地命名文件像.env.local.env.stage.env.prod,当我在本地运行节点应用程序时,它会加载.env.local, with导出STAGE=stage framework would use.env.stage ,就像wise fro productoin一样。 是这样的支持在未来的js,我可以有不同的.env`文件为不同的阶段。如果支持,那么我如何指定哪个阶段Next.js正在运行。

sulc1iza

sulc1iza1#

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

// .env.production.local
// This file is for production and run with next start or npm run start
// NODE_ENV=production

字符串
用于发展

// .env.development.local
// This file is for development and run when next dev or npm run dev
// NODE_ENV=development


用于测试

// .env.test.local
// This file is for tests with jest or cypress for example
// NODE_ENV=test


如果你想了解更多,这里有关于下一个js环境的完整信息
更新:
如果你想运行更多没有下一个standard的环境,你可以手动操作:

// 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,
};


当你运行npm run/yarn dev:staging你的staging环境from .env.staging.local将会被加载,我的参考来自flybayer,你可以阅读更多here

2ledvvac

2ledvvac2#

原始答案-https://stackoverflow.com/a/76724510/3556531
我使用package.json的脚本根据调用的命令将不同的环境秘密复制到.env.local

"build-dev":"cp .env.dev .env.local && yarn build",
"build-prod":"cp .env.prod .env.local && yarn build"

字符串
我不会说它的理想,但在我的情况下完成工作。

相关问题