【发布时间】:2017-08-21 03:24:16
【问题描述】:
在我的package.json 文件的脚本部分,我试图重命名目录中的一些文件,但是我想在命令行中注入一个取自package.json 本身的值(版本) .
所以在下面的例子中,build:rename 脚本,我希望它在执行之前替换脚本中的令牌 (somevalue)。
在这种情况下,我想传入npm_package_version,使其成为文件名的一部分。我很茫然……
"scripts": {
"build:copy": "mkdirp dist && cp src/*.js dist/",
"build:rename": "renamer --regex --find '(.+)(.js)' --replace '$1**somevalue**$2' dist/*"
}
【问题讨论】:
-
假设您的
npm_package_version当前是1.2.0,并且您将一些文件复制到dist目录,即;foo.js、baz.js和quux.js。运行build:rename脚本是否会导致文件重命名为foo1.2.0.js、baz1.2.0.js和quux1.2.0.js?还是我错过了什么? -
不,它没有...... --replace 参数采用带引号的字符串参数,我尝试的所有操作都失败了,我试图让脚本替换 npm_module_version 中的值,这是一个全局值在 package.json 文件范围内提供的节点。如果您在原始问题中看到我的示例,则正则表达式正在创建两个组,我可以在输出文件名的模板中使用它们,但我需要能够在该输出文件名中注入版本号。如果需要评估 npm_package_version 值而不是接受变量名作为文字。
-
谢谢,我明白你的正则表达式想要达到什么目的,以及
npm_package_version是什么。在我之前的评论中,我只是提供了一个输入文件名和结果文件名的假设示例,以准确说明您想要的结果是什么。那么,在我之前的评论中,baz.js是否应该重命名为baz1.2.0.js? -
是的,你的问题。我正在尝试将 package.json 中的版本号用作唯一且仅定义它的位置,但能够在任何需要标记或标识具有版本的文件的地方使用它。我宁愿不必在每次版本更改时更新 renamer npm 脚本中 --replacement 值的文字部分。
标签: npm package.json npm-scripts