定期删除yarn.lock 文件以允许yarn 从package.json 中指定的semver 范围内安装最新版本的依赖项和子依赖项是否合适?同样的问题也适用于 package-lock.json 和 npm。
我问的原因是我过去曾参与过一个项目,其中一些依赖项设置为非常旧的版本。团队(正确或错误)认为更新比当前版本落后两个主要版本的依赖项是一个危险的更改。因此,我希望使依赖项保持最新状态,并避免大爆炸的依赖项更新。
我的团队使用 git-flow 分支模型(https://nvie.com/posts/a-successful-git-branching-model/)。所以我想知道在每个版本合并到主分支后,我们是否适合在开发分支中启动一个新的yarn.lock。
编辑:
正如@str 所指出的,我原来的措辞(上面未更改)有点不一致。
我不一致的部分是,我询问的是在 semver 范围内获取最新版本,但随后我给出了一个例子,其中我从事的项目“落后了两个主要版本”。
确实,最常用的 semver 范围运算符(根据我的经验)不允许yarn或npm安装主值高于范围表达式中的版本的版本。例如,如果您使用https://semver.npmjs.com/上的 npm semver 计算器并输入包 lodash 和范围 ^2.0.0,它将仅匹配 2.xx 版本。
但是,可以指定包含主要版本更新的 semver 范围。如果您访问https://semver.npmjs.com/并输入 package lodash 和 range >2,您将看到该范围匹配所有 3.xx 版本和所有 4.xx 版本。
无论如何,我想问的问题更多的是允许依赖项一般更新,而不是允许它们更新到更新的主要版本的特定情况。关于落后两个主要版本的例子是我试图提到更新依赖项开始看起来有风险的情况,因此团队开始进一步推迟它。
在我看来,yarn.lock 或 package-lock.json 在短期内很有用,因为它使项目在不同机器上构建更加一致,而且从长远来看也很有用,因为它允许团队检查历史记录修订并按照创建时的方式构建它。但我也认为对于项目来说,定期删除锁可能是一个很好的做法,以便所有依赖项都可以更新到其 semver 范围内的最新版本。有没有人有这样的程序的经验,他们可以在这里发表评论?或者谁能告诉我一个令人信服的理由为什么这是一个坏主意?
Javascript的正则表达式语法只有一个单词边界:\b.
Vim的正则表达式语法有两个:( \<单词的开头)和\>(单词的结尾).
任何人都可以给我一个搜索的例子,可以通过vim风格的单词边界实现,但无法用javascript风格实现?
或者说具有单个单词边界的正则表达式语法可以做多少,但是具有开始和结束边界还有其他一些优势?