如何在npm脚本中引用包版本?

如何在npm脚本中引用包版本?,npm,package.json,npm-scripts,Npm,Package.json,Npm Scripts,我想在npm脚本中引用我的软件包版本,以便在应用程序中显示当前版本。 差不多 { “名称”:“bla”, “版本”:“1.0.0”, “作者”:“布拉布拉”, “脚本”:{ “build”:“node VERSION=build/build.js” } } 有办法做到这一点吗?1)在npm脚本中引用包版本。 在npm脚本中,您可以使用变量npm\u package\u version引用版本。例如: 使用bash shell(例如Linux、macOS): { ... “版本”:“1.0.0

我想在npm脚本中引用我的软件包版本,以便在应用程序中显示当前版本。 差不多

{
“名称”:“bla”,
“版本”:“1.0.0”,
“作者”:“布拉布拉”,
“脚本”:{
“build”:“node VERSION=build/build.js”
}
}
有办法做到这一点吗?

1)在npm脚本中引用包版本。 在
npm脚本
中,您可以使用变量
npm\u package\u version
引用
版本
。例如:

  • 使用bash shell(例如Linux、macOS):

    {
    ...
    “版本”:“1.0.0”,
    “脚本”:{
    “构建”:“echo$npm\u包\u版本”
    }
    }
    
    请注意
    $
    前缀

  • 使用Windows(例如cmd.exe、Powershell):

    {
    ...
    “版本”:“1.0.0”,
    “脚本”:{
    “生成”:“echo%npm\u包\u版本%”
    }
    }
    
    注意
    %
    前缀和后缀

  • 跨平台

    要跨平台使用一种语法,请查看包


2) 在节点脚本中引用包版本。 包版本也可以在应用程序/节点脚本(即
build.js
)中引用,如下所示:

const VERSION=process.env.npm\u包\u版本;
console.log(版本);//-->1.0.0

3) 用包版本替换.js文件中的占位符字符串。 另一种方法是在JavaScript文件中指定占位符文本字符串。假设我们有一个名为
build.js
的文件,在该文件中有一个名为
VERSION
的变量,声明如下:

//build.js
常量版本=“@VERSION@”
如您所见,占位符文本字符串为
@VERSION@

然后,您可以按如下方式安装并使用在中调用的包:

{
...
“版本”:“1.0.0”,
“脚本”:{
“添加版本”:“replace-s\”@version@“$npm\u package\u version build/build.js”
}
}
运行
npm run add version
将在名为
build.js
的文件中将
@version@
的实例替换为包版本(即
1.0.0
)。此解决方案将npm包版本硬编码到结果文件中

注意:
addversion
脚本(以上)中的to字符串当前使用
$
前缀(即
$npm\u package\u version
)来访问变量,因此这将仅在bash shell上成功运行。但是,对于跨平台使用,您需要使用
cross-var
,如上文第一节所述。在这种情况下,
添加版本
脚本可定义如下:

{
...
“版本”:“1.0.0”,
“脚本”:{
“添加版本”:“交叉变量替换-s\”@version@\“$npm\U包\u版本构建/build.js”
}
}

很好的总结。还有许多其他npm变量可用——请参见。@Moos——要以编程方式列出特定于您的项目的所有
npm\uu
环境变量,您可以使用
npm run env
命令——如我的答案中所述。很高兴知道。谢谢。