Regex Package.json使用变量和字符串替换应用版本

时间:2020-03-24 18:25:29

标签: json regex npm package.json

我试图通过运行npm脚本,使用package.json文件替换两个文件中的版本号,并使用“替换”:“ 1.1.0”。我遇到了正则表达式问题,我相信可以替换。我认为解决方案应该是某种正则表达式分组,其中我只将.*的值替换为$npm_package_version =已解决,但是我不知道该怎么做。

Package.json版本= "version": "2.0.45",

要查找的字符串= "ApiVersion": "Any number and periods like this 1.2.67",

尝试输入的代码= "updateVersion": "replace \"\"ApiVersion\": .*\",\" \"\"ApiVersion\": \"$npm_package_version\",\" ../appsettings.json",

预期结果=文件appsetting.json中的ApiVersion应该更改为= {"ApiVersion": "2.0.45",

收到的错误= "ApiVersion": "$npm_package_version",

我假设正则表达式在这里发生了什么,但是我不知道如何获取npm软件包版本var来呈现在字符串值中。就像$npm_package_version一样。

1 个答案:

答案 0 :(得分:0)

终于明白了。这对我的书很有帮助。

postversion": "replace '(?<=\"ApiVersion\":\\s\").*(?=\",)' $npm_package_version ../appsettings.json",

为解释该特质(此处的文字),创建了一个组。 ?<=创建一个Lookbehind。 \\s匹配任何空格-两次转义。 .*完全匹配两次匹配要求之间的所有匹配。 ?=创造了一种前瞻性。因此,Look / Match逐步完成=“ ApiVersion”:“之间的任何空格”,仅将中间的内容替换为npm变量。

我认为这与实际操作很接近-不是正则表达式专家。

在此处获得帮助-How to replace captured groups only?