在 npm preversion 脚本中获取版本

Mag*_*gus 1 node.js npm npm-scripts

我正在尝试获取我在 npm preversion 脚本中创建的版本。

如:

{
    "scripts": {
        "preversion": "echo $version"
    }        
}
Run Code Online (Sandbox Code Playgroud)

但是我找不到要写什么来代替$version.

我想在我做的时候得到我正在创建的版本npm version <something>。例如,如果我这样做npm version 1.0.1,我想获得1.0.1. 但是如果npm version minor我在 version 时这样做1.0.0,我想得到1.1.0.

Rob*_*obC 5

重新定义您的preversion脚本如下:

"scripts": {
  "preversion": "echo $npm_package_version"
}
Run Code Online (Sandbox Code Playgroud)

解释:

这将访问package.json vars。该npm_package_version变量是 npm 创建的众多环境变量之一。

*nix平台上,npm默认使用package.json脚本sh。因此,您在 npm 脚本中使用$前缀引用环境变量,即$npm_package_version.

但是,在 Windows 上,npmcmd默认使用运行脚本。在这种情况下,您需要使用%...%语法在 npm 脚本中引用环境变量。例如:

"preversion": "echo %npm_package_version%"
Run Code Online (Sandbox Code Playgroud)

如果需要跨平台支持,您可以通过使用cross-var来避免语法差异,即$前缀 v's 。在这种情况下,您需要按如下方式重新定义脚本:%...%preversion

"scripts": {
  "preversion": "cross-var echo $npm_package_version"
}
Run Code Online (Sandbox Code Playgroud)

提示:如果你cd进入你的项目目录并运行npm run env它,它将列出npm_*npm 创建的所有带前缀的环境变量。