如何在 npm 脚本中引用包版本?
How can I reference package version in npm script?
我想在 npm 脚本中引用我的包版本,以便我可以在应用程序中显示当前版本。
像
{
"name": "bla",
"version": "1.0.0",
"author": "bla bla",
"scripts": {
"build": "node VERSION=<<package.version>> build/build.js"
}
}
有办法吗?
1) 在 npm-scripts 中引用包版本。
在 npm-script
中,您可以使用变量 npm_package_version
引用 version
。例如:
使用 bash shell(例如 Linux,macOS):
{
...
"version": "1.0.0",
"scripts": {
"build": "echo $npm_package_version"
}
}
注意$
前缀
使用Windows(例如cmd.exe,电源shell):
{
...
"version": "1.0.0",
"scripts": {
"build": "echo %npm_package_version%"
}
}
注意%
前缀和后缀
跨平台
要使用一种语法跨平台检查包 cross-var
2) 在节点脚本中引用包版本。
包版本也可以在您的 app/node 脚本(即 build.js
)中引用,如下所示:
const VERSION = process.env.npm_package_version;
console.log(VERSION); // --> 1.0.0
3) 用包版本替换 .js 文件中的占位符字符串。
实现此目的的另一种方法是在 JavaScript 文件中指定一个占位符文本字符串。假设我们有一个名为 build.js
的文件,在该文件中我们有一个名为 VERSION
的变量声明如下:
// build.js
const VERSION = '@VERSION@'
如您所见,占位符文本字符串为 @VERSION@
.
然后您可以按如下方式安装和使用名为 replace in an npm-script 的软件包:
{
...
"version": "1.0.0",
"scripts": {
"add-version": "replace -s \"@VERSION@\" $npm_package_version build/build.js"
}
}
运行 npm run add-version
将在名为 build.js
的文件中用软件包版本(即 1.0.0
)替换 @VERSION@
的实例。此解决方案会将 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"
}
}
我想在 npm 脚本中引用我的包版本,以便我可以在应用程序中显示当前版本。 像
{
"name": "bla",
"version": "1.0.0",
"author": "bla bla",
"scripts": {
"build": "node VERSION=<<package.version>> build/build.js"
}
}
有办法吗?
1) 在 npm-scripts 中引用包版本。
在 npm-script
中,您可以使用变量 npm_package_version
引用 version
。例如:
使用 bash shell(例如 Linux,macOS):
{ ... "version": "1.0.0", "scripts": { "build": "echo $npm_package_version" } }
注意
$
前缀使用Windows(例如cmd.exe,电源shell):
{ ... "version": "1.0.0", "scripts": { "build": "echo %npm_package_version%" } }
注意
%
前缀和后缀跨平台
要使用一种语法跨平台检查包 cross-var
2) 在节点脚本中引用包版本。
包版本也可以在您的 app/node 脚本(即 build.js
)中引用,如下所示:
const VERSION = process.env.npm_package_version;
console.log(VERSION); // --> 1.0.0
3) 用包版本替换 .js 文件中的占位符字符串。
实现此目的的另一种方法是在 JavaScript 文件中指定一个占位符文本字符串。假设我们有一个名为 build.js
的文件,在该文件中我们有一个名为 VERSION
的变量声明如下:
// build.js
const VERSION = '@VERSION@'
如您所见,占位符文本字符串为 @VERSION@
.
然后您可以按如下方式安装和使用名为 replace in an npm-script 的软件包:
{
...
"version": "1.0.0",
"scripts": {
"add-version": "replace -s \"@VERSION@\" $npm_package_version build/build.js"
}
}
运行 npm run add-version
将在名为 build.js
的文件中用软件包版本(即 1.0.0
)替换 @VERSION@
的实例。此解决方案会将 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"
}
}