如何在 npm 脚本中使用 package.json 的 npm 配置变量

cj-*_*307 5 node.js npm package.json

我有一个 npm 项目,在调用 node.js 时使用了许多标志,因此我的 package.json 脚本有点令人困惑,如下所示:

"scripts": {
        "test": "node --use_strict -r dotenv/config --experimental-vm-modules node_modules/.bin/jest",
        "testwatch": "node --use_strict -r dotenv/config --experimental-vm-modules node_modules/.bin/jest -watchAll",
        "start": "node --use_strict -r dotenv/config --experimental-vm-modules ./src/index"
    },
Run Code Online (Sandbox Code Playgroud)

有没有办法在 package.json 文件中的单个参数中指定 node.js 标志,以便将其同时传递给所有脚本?或者,如果您可以给我另一个建议,使这些命令更有条理,它也会很有用。谢谢。

h-s*_*fat 9

对于这个问题我只能想到两种解决方案。

  1. 使用 package.json 配置变量
  2. 使用别名

解决方案一:

您可以通过以下方式访问脚本中的配置变量$npm_package_config_<variable-name>

package.json文件

"config": {
    "testflags": "--use_strict -r dotenv/config --experimental-vm-modules"
},
"scripts": {
    "test": "node $npm_package_config_testflags node_modules/.bin/jest"
}
Run Code Online (Sandbox Code Playgroud)

解决方案2:

顺便说一句,我不知道如何在 Windows 机器上执行此操作!所以我假设您使用的是 Mac 或 GNU/Linux 操作系统。

在 shellrc 文件中创建一个别名(例如,~/.bashrc用于 bash 和~/.zshrczsh 等)。

将以下内容添加到您的~/.bashrc~/.zshrc文件或您拥有的任何 shellrc 文件中。

alias node_test='node --use_strict -r dotenv/config --experimental-vm-modules'
Run Code Online (Sandbox Code Playgroud)

注意:在这里您必须提供dotev/config文件的完整路径。要获取文件的完整路径,config.js请转到dotenv目录并运行readlink -f config。复制文件的完整路径并替换dotenv/config为上述别名。

然后保存文件并通过source ~/.bashrc在终端中运行来获取它。

现在在您的 package.json 文件中:

"scripts": {
    "test": "node_test node_modules/.bin/jest"
}
Run Code Online (Sandbox Code Playgroud)