javascript - 如何在 Package.json 中重置版本
问题描述
我有大约 20 个反应项目,所有这些项目都有 package.json 文件。我有这样的包:
"@material-ui/core": "4.11.4",
"@material-ui/icons": "4.11.2",
"@material-ui/lab": "4.0.0-alpha.58",
"@material-ui/styles": "4.11.4",
我需要遍历每一行并将它们更新为“0.0.0”。是否有一个正则表达式可以匹配"***.***.***"
并将其替换为 "0.0.0" ?
我需要这样做的原因:我创建自己的包。我将它们从一个位置移动到另一个位置,因此它们的版本又从 0 开始。如果我执行 npm 检查更新,例如包是 5.8.34,它不会将其更新回 0.0.1。但是,如果我将它们的所有值更新为 0.0.0,然后运行 npm check updates 它将更新为 0.0.1。
另外,为什么有人会在这里投票-1?不喜欢这个问题或不知道答案?我在这里提供了我需要完成的所有内容,下面是我尝试的一些正则表达式。你为什么还要投票-1?
我试过:
: "[0-9].+?"
到目前为止,这是最好的工作
: "[0-9].[0-9].[0-9]"
它不会找到包名称中包含字母的包,例如"@material-ui/lab": "4.0.0-alpha.58"
. 如果有人分享更好的解决方案,我会更新问题。
这纯粹是一个问题,如何将 Package.json 文件中的 Packages 版本重置为 0.0.0。
解决方案
如果所有包都以数字开头,后跟一个点和单词字符,单词字符之间可以有一个连字符,您可以使用捕获组并在替换中使用它。
图案:
("[^\s"]+":\s*")\d+(?:\.\w+(?:-\w+)*)+",
模式匹配:
(
捕获组 1($1
在示例代码中表示为)"[^\s"]+":\s*"
匹配"..."
从那时起:
和可选的空白字符
)
关闭组 1\d+
匹配 1+ 个数字(?:
非捕获组\.\w+(?:-\w+)*
匹配.
1+ 个单词字符和可选的-
1+ 个单词字符
)+
关闭非捕获组并重复1+次",
匹配双引号和逗号
用。。。来代替
$10.0.0",
const regex = /("[^\s"]+":\s*")\d+(?:\.\w+(?:-\w+)*)+",/;
[
`"@material-ui/core": "4.11.4",`,
`"@material-ui/icons": "4.11.2",`,
`"@material-ui/lab": "4.0.0-alpha.58",`,
`"@material-ui/styles": "4.11.4",`
].forEach(s => console.log(s.replace(regex, `$10.0.0",`)));
推荐阅读
- macos - .NET Core (OS X) - 如何添加自签名证书,绑定到 Kestrel 以获取本地主机的替代名称?
- c# - C#查找数字的位数
- jenkins - github的webhook 30分钟后如何触发Jenkins的流水线
- google-cloud-platform - 谷歌云数据目录
- spring - mockMvc 不理解带有多个匹配器的 securityConfig
- docker - 标记不同的相同 docker 图像(具有相同的 imahe ID)表现不同
- php - wp_query->max_num_pages 在自定义帖子类型上始终返回 0
- javascript - 选择 2 标记移动到上一行
- python - 在 keras 中训练时如何为每个训练示例添加权重
- python - 如何使用 python 代码去噪心电图信号?