可以使用package.json 变量version
通过脚本引用in 中指定的电流,如下所示:package.json
重击
在bash shell 中使用语法 - (注意美元$
前缀):
$npm_package_version
视窗
在cmd.exe和Powershell中使用语法 - (注意百分比%
前缀和后缀):
%npm_package_version%
跨平台
为了实现这个跨平台使用cross-var:
$ npm i -D cross-var
build:rename
脚本可以修改如下:
"scripts": {
...
"build:rename": "cross-var \"renamer --regex --find '\\.js$' --replace '$npm_package_version.js' dist/*\""
},
注意:当值包含对值中带括号的子字符串/组的美元引用 ( , ) 时,对--find
正则表达式的附加更改cross-var
似乎效果不佳。新的正则表达式只匹配以结尾的文件/字符串部分。--replace
$1
$2
--find
.js
示例目录
运行更新后的build:rename
脚本(当version
inpackage.json
为时0.3.0
),将从以下重命名目录.js
中的文件dist
:
.
├── dist
│ ├── a.html
│ ├── b.css
│ ├── foo.js
│ ├── bar.js
│ └── quux.js
...对此:
.
├── dist
│ ├── a.html
│ ├── b.css
│ ├── foo0.3.0.js
│ ├── bar0.3.0.js
│ └── quux0.3.0.js
附加说明
脚本中使用的cp命令build:copy
也不能跨平台工作。这可以用copyfiles包代替:
$ npm i -D copyfiles
...然后build:copy
脚本替换为以下内容:
"scripts": {
"build:copy": "copyfiles -u 1 \"src/*.js\" \"dist\"",
...
},
然后mkdirp dist &&
,您的脚本中的部分将变得多余,因为copyfiles
创建了必要的目录(即dist
)。
如果您的用例不需要跨平台,那么只需将build:copy
脚本保持原样,并将build:rename
脚本更改为:
"build:rename": "renamer --regex --find '\\.js$' --replace $npm_package_version'.js' dist/*"