我想引用我的包版本在NPM脚本,这样我就可以显示应用程序当前版本。就像是
{
"name": "bla",
"version": "1.0.0",
"author": "bla bla",
"scripts": {
"build": "node VERSION=<<package.version>> build/build.js"
}
}
有没有办法做到这一点?
在npm-script
的,你可以使用变量version
引用npm_package_version
。例如:
{
...
"version": "1.0.0",
"scripts": {
"build": "echo $npm_package_version"
}
}
注意$
前缀{
...
"version": "1.0.0",
"scripts": {
"build": "echo %npm_package_version%"
}
}
注意%
前缀和后缀包的版本也可以在一个应用程序/节点脚本引用(即build.js
)如下:
const VERSION = process.env.npm_package_version;
console.log(VERSION); // --> 1.0.0
实现这一目标的另一种方法是指定你的JavaScript文件中的占位符文本字符串。比方说,我们有一个build.js
文件命名,该文件中我们有一个VERSION
命名如下声明的变量:
// build.js
const VERSION = '@VERSION@'
正如你所看到的,占位符文本字符串是@VERSION@
。
然后,您可以安装并使用在replace称为npm-script包如下:
{
...
"version": "1.0.0",
"scripts": {
"add-version": "replace -s \"@VERSION@\" $npm_package_version build/build.js"
}
}
运行npm run add-version
将替换包的版本@VERSION@
(即1.0.0
)的情况下,在文件命名build.js
。该解决方案将硬编码NPM包版本到结果文件。
注:在add-version
脚本字符串(如上图)目前使用的$
前缀(即$npm_package_version
)访问变量,因此这将仅在bash shell中运行成功。但是,对于跨平台的使用情况,您需要按照第一个(上面)中说明使用cross-var
。在这种情况下add-version
脚本可以被定义为如下:
{
...
"version": "1.0.0",
"scripts": {
"add-version": "cross-var replace -s \"@VERSION@\" $npm_package_version build/build.js"
}
}