突然间,NPM 脚本变量不再起作用

oli*_*oli 5 windows variables npm package.json

我在 NPM 脚本中使用package.json这样的变量:

// package.json
{
  "version": "0.12.1",
  "scripts": {
    "get-version": "echo %npm_package_version%"
  }
}
Run Code Online (Sandbox Code Playgroud)

npm run get-version目前 echo%npm_package_version%而不是0.12.1. 过去,脚本运行没有任何问题。突然只有变量名回来了。具有多个存储库。我运行 Windows 10 2004 和 NodeJS v15.4.0。

Node.js 15 中的 NPM 脚本有变化吗?这是一个错误还是一个功能?

Dip*_*mar 0

我发现简单的黑客在我的情况下工作得很好,

特别是在您的用例中

// package.json
{
  "version": "0.12.1",
  "scripts": {
    "get-version": "node -e \"console.log(process.env.npm_package_version)\""
  }
}
Run Code Online (Sandbox Code Playgroud)

用法

npm run get-version

然而你想传递参数。

// package.json
{
  "scripts": {
    "get-argument": "node -e \"console.log('your argument:',  process.argv[1] )\"",
  }
}
Run Code Online (Sandbox Code Playgroud)

测试示例

npm run get-argument hello_world