【问题标题】:How to export env variable from npm script?如何从 npm 脚本导出环境变量?
【发布时间】:2016-03-01 02:09:58
【问题描述】:

我知道我们可以声明要在npm run 命令运行的脚本中使用的环境变量,如下所示: TEMP_VARIABLE=value node app.js

但是如果我需要在多个npm run 脚本中使用声明的变量,那么每次都需要重复指定变量的值,如下面的代码示例:

"start": "SRC_DIR=src node src/app.js",
"lint": "SRC_DIR=src jshint src/*.js",
"coverage": "SRC_DIR=src istanbul cover --dir outputDir -i src/*.js"

有没有办法让我们可以使用npm run-script 导出环境变量以允许如下所示:

"scripts": {
     "set-env": "export SRC_DIR=src",    # should export the env var to be used later
     "start": "node ${SRC_DIR}/app.js",                      # use the env var set earlier.
     "lint": "jshint ${SRC_DIR}/*.js"                          # use the same env var again
     "coverage": "istanbul cover -d ./lcov -i ${SRC_DIR}/*.js"      # use again
}

那么我们就可以这样做了:

npm run set-env
npm run lint
npm run start

【问题讨论】:

  • 为什么不使用configobject: docs.npmjs.com/files/package.json#config
  • 我想做同样的事情,除了我不想设置静态值,我想更新$PATH环境变量的值。在这种情况下,config 将不起作用。

标签: node.js npm environment-variables env


【解决方案1】:

如果你使用 yarn 作为你的包管理器,试试这个命令 很容易找到如何实现它

yarn run env

【讨论】:

    【解决方案2】:

    您可以通过使用不同的 package.json 功能 npm-config 来实现该行为。

    示例

    以下是对您的代码的改编。

    {
        "config": {
             "srcDir": "src"
        },
        "scripts": {
             "start": "node ${npm_package_config_srcDir}/app.js",
             "lint": "jshint ${npm_package_config_srcDir}/*.js",
             "coverage": "istanbul cover -d ./lcov -i ${npm_package_config_srcDir}/*.js"
        }
    }
    

    官方文档

    【讨论】:

      猜你喜欢
      • 2017-12-25
      • 2020-07-20
      • 2021-06-28
      • 2017-02-22
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      相关资源
      最近更新 更多