当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 如何从npm脚本导出env变量?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我知道我们可以声明env变量在npm run命令运行的脚本中使用,如下所示: TEMP_VARIABLE =值节点app.js 但是如果我需要在多个npm运行脚本中使用声明的变量,那么每次都会重复指定变量值的工作
我知道我们可以声明env变量在npm run命令运行的脚本中使用,如下所示:
TEMP_VARIABLE =值节点app.js

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

"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导出env变量以允许类似下面的内容:

"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
您可以使用不同的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"
    }
}

官方文件

> https://docs.npmjs.com/files/package.json#config
> https://docs.npmjs.com/misc/scripts#special-packagejson-config-object

网友评论