代码之家  ›  专栏  ›  技术社区  ›  hsz

运行npm任务时加载.env环境变量

  •  1
  • hsz  · 技术社区  · 7 年前

    假设我们有一个 .env

    AWS_PROFILE=hsz
    ENVIRONMENT=development
    

    还有一个简单的例子 npm 定义的任务:

    {
      "name": "project",
      "version": "0.0.1",
      "scripts": {
        "deploy": "sls deploy"
      }
    }
    

    但是朗宁 npm run deploy .环境

    better-npm-run 比如:

    {
      "name": "project",
      "version": "0.0.2",
      "scripts": {
        "deploy": "bnr deploy"
      },
      "betterScripts": {
        "deploy": "sls deploy"
      },
      "devDependencies": {
        "better-npm-run": "^0.1.1",
      }
    }
    

    但这看起来像是一项开销——特别是当我们有10多项任务时。

    是否有更好的方法始终加载 .环境 更好的npm运行

    2 回复  |  直到 7 年前
        1
  •  5
  •   mihai    7 年前

    有点难看,但你可以试试这样:

    "scripts": {
      "deploy": "export $(cat .env | xargs) && sls deploy"
    }
    

    这将从中导出所有环境变量 .env sls deploy .

    this answer .

    不是很干净,但它避免了使用额外的模块。

        2
  •  3
  •   Faisal Hasnain    6 年前

    env-cmd npm包,用于在执行npm脚本之前设置从.env文件加载的环境变量。

    1. 将包添加到包中。json devdependency:
    npm i env-cmd -D
    
    1. 在package.json中为npm脚本添加env cmd程序前缀:
    {
      "scripts": {
        "deploy": "env-cmd sls deploy"
      }
    }
    
        3
  •  0
  •   front_end_dev    7 年前

    在项目本身中维护并加载所有特定于环境的配置。

    dev.js

    module.exports = {
        "host":"dev.com"
    }
    

    prod.js

    module.exports = {
        "host":"prod.com"
    }
    

    config.js-将基于process.env.env变量解析配置的主文件。

    const dev = require('./dev');
    const prod = require('./prod');
    let envObject = {};
    const env = process.env.ENV || "dev";
    switch(env) {
        case 'prod':
            envObject = prod;
            break;
        default:
            envObject = dev;
    }
    envObject['ENV'] = env;
    process.env = Object.assign(process.env,envObject); // Optional if you prefer to add them into process environment otherwise `require('./config')` where you need configuration. 
    module.exports = envObject;
    

    index.js-每次项目启动时调用节点项目根文件

    const config = require('./config');
    console.log('config object => ',config.host);
    

    {
      "name": "project",
      "version": "0.0.2",
      "scripts": {
        "deploy": "sls deploy"
      }
    }
    

    运行node.js代码 产品环境 ENV=prod npm run deploy ; npm run deploy

    默认环境设置为 dev 在里面 ./config.js

    使用这个简单的实践,您不需要任何npm模块来管理您的环境配置。