自从我们在2019年的最后一次更新以来,NPM已经发生了相当多的事情。我们早该更新npm v7的状态了。
尽管有一些巨大的令人分心的变化(有些不幸,有些非常幸运),但开发工作一直在稳步进行。
昨天,Edward Thomson在GitHub卫星上演示了NPMv7中的一些特性。问答环节非常棒,很明显,你们中的许多人都对NPM CLI的这次更新感到兴奋,并且有很多问题不幸地不能在这么短的时间内得到充分的回答。
这篇帖子一开始是关于我们一直在做的事情的简短更新,本打算随演讲一起上线,但它变得很长。所以,相反,这是第一篇帖子,还有更多的帖子,我将带大家看看NPMv7中的一些主要变化,这些变化背后的想法和动机,以及它们可能如何影响您和您的工作。
NPMv7基于一些技术和用户体验原则,本系列中的每个帖子都将以某种方式与其中的一个或多个相关。
减少不可行的噪音。或者,换句话说,“让NPM少对你大喊大叫”。我们已经检查了整个项目,从数据管理到表示层,去掉了不提供有价值信息的输出。
为您管理您的包裹。在NPM中,有几个地方的V6和更早版本有点像是放弃了,让您自己解决问题。但是NPM是一个套餐经理!它不应该让你管理包裹,那是它的工作!
严格关注点分离。展望未来,NPM CLI本身将严格地成为用户界面层,我们已经将所有复杂的树管理和注册表交互移至@npmcli/arborist、pacote和各种libnpm*模块。
举止正确的同时要尽可能快。快速软件的关键是尽可能少地执行操作,包括尽可能少地等待。从使用Minipass流的重构,到为停滞不前的Node.js版本重构长达十年的兼容性修复,NPMv7更精简、速度更快,因为它更懒惰。
如果我们知道该怎么做,我们就不喊你去做。让我们只为你做这件事,并且第一次做完所有的事情。这就是NPM爱你的意思。这意味着像一个忠诚的好助手一样照顾你和你的项目,只有在绝对必要的时候才麻烦你介入。
深入研究了树木管理和分析实用程序arborist,它在npm v7中做了很多繁重的工作。
去年NPM CLI依赖堆栈中发生的一些主要重构的更新和影响。
更新了package-lock.json格式,添加了对ya n.lock文件的处理,这也是我们将继续使用package-lock.json的原因。
解决“嘈杂的Chokidar/fsevents”问题,以及这与NPM基金的关系。
可能还有关于测试版和最终GA版本的更新,因为这需要一分钟的时间:)。
NPM CLI团队在过去的几个月里一直在运行开放的RFC流程,这对我们的开发流程产生了很大的影响。
通常,编写代码是最容易的部分。困难的部分是所有的思考和讨论,以确保我们正在为用户将从中受益的功能编写代码,并且我们已经充分研究了边缘情况,相信我们没有忽略一些重要的东西。
如果您有兴趣参与NPM的设计过程,我们希望您参与其中!构建这样的东西是团队的努力,我们都受益于从我们的社区获得了广泛的视角。
您是否真的希望NPM能做些什么,或者做些不同的事情,或者停止做什么?去NPM/RFC给我们一个建议。显然,你越投入、越彻底,我们就越容易完成它,但每一个伟大的想法都必须从某个地方开始,所以不要觉得你必须在开始之前就知道所有的答案:)。
如果您希望看到关于npm v7的内容,您可以在npm/npm-v7-blog repo上发布一个问题。
请继续关注我们的更多信息,我希望这些帖子能证明是有趣的,内容丰富的!