为了账号安全,请及时绑定邮箱和手机立即绑定

从包.json加载单独的 .env

从包.json加载单独的 .env

米琪卡哇伊 2022-09-16 21:20:56
"start:dev": "set NODE_ENV=development&&nodemon ./bin/www", "start:test": "set NODE_ENV=testing&&nodemon ./bin/www",我有两个单独的 .env 文件 dev.env 和 test.env 我想在 npm 上运行启动:开发和加载测试.env 在 npm 上运行启动:测试我已经搜索了互联网上的每个地方,但没有帮助。任何帮助是值得赞赏的。
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

只能在 npm 脚本中设置节点 env。要导入文件,您需要在服务器文件上编写代码。


在服务器文件中导入 dotenv


import dotenv from "dotenv";

or

const dotenv = require("dotenv");

使用以下代码导入特定的 env 文件。



let envConfig={}

if (process.env.NODE_ENV === "development") {

  if (fs.existsSync(".env.development")) {

    envConfig = dotenv.parse(fs.readFileSync(".env.development"));

  } 


} else if(process.env.NODE_ENV === "testing"){

 if (fs.existsSync(".env.test")) {

    envConfig = dotenv.parse(fs.readFileSync(".env.test"));

  } 

}


 for (const k in envConfig) {

    process.env[k] = envConfig[k];

  }


查看完整回答
反对 回复 2022-09-16
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

NPM 包加载默认情况下调用的文件,但可以覆盖此行为。因此,您可以执行如下操作:dotenv.env


const { config } = require('dotenv')

if (process.env.NODE_ENV === 'development') {

    config({ path: '/full/path/to/your/dev.env' })

} else if (process.env.NODE_ENV === 'testing') {

    config({ path: '/full/path/to/your/test.env' })

}


查看完整回答
反对 回复 2022-09-16
?
米脂

TA贡献1836条经验 获得超3个赞

我相信这个答案有一个解决方案给你:


scripts: {

  "set-env:production": "export $(cat .production.env | grep \"^[^#;]\" |xargs)",

  "set-env:development": "export $(cat .env | grep \"^[^#;]\" |xargs)",

}


查看完整回答
反对 回复 2022-09-16
  • 3 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信