我一直在阅读npm左撇子惨败,但我对它的发生方式感到有些困惑。我想我对npm的确如何运作有误解。如果左侧开发者的开发者未发布该包,我认为npm install left-pad
将不再起作用。但是,对于已经安装它的用户,左边的pad还不在node_modules文件夹中吗?开发人员不应该说,Babel必须移除并重新安装左键盘以获得npm,才能意识到包裹已经消失了吗?我显然遗漏了一些东西,但我不确定是什么。
答案 0 :(得分:8)
当我运行npm install babel
时,左边的pad不是捆绑在babel中,而是表示为依赖于它的package.json文件。所以npm然后必须找到左键并下载它。因此,如果您是第一次使用左键盘安装左脚垫或任何东西,您将无法做到。虽然这意味着如果它已经存在于您的本地目录中,那么您将非常安全,但只要在其他地方构建项目,该项目就无法正确构建。例如,对于每个新变更集从头开始执行干净构建的CI服务器将无法构建依赖于左侧填充的任何项目。或者,如果您是第一次签出项目,或者将其部署到新服务器,那么您将无法构建。
如果您直接依赖左侧垫,这很容易解决。只需编写替换并更新您的代码即可使用替换。但是当Babel说,当你的依赖树需要很深的时候,你不可能自己重构Babel或其他模块来使用左边的替换。您必须等待所有各种节点模块开发人员用其他内容更新他们的模块并重新发布。
它并不像新闻文章所说的那样具有启示性,但它带来了巨大的不便,并且在开发人员工作区之外的许多系统中抛出了一个扳手,其中左侧垫已经被缓存。
答案 1 :(得分:2)
正如@Lazar所说,你理解正确。
问题在于,如果Babel依赖左脚垫,并且我正在尝试安装Babel,它将会失败。
好吧,我总是可以自己重写它作为一种解决方法。
但如果它是由Babel使用的模块所使用的模块所使用的模块,或更多模块,那么你将面临真正的噩梦,因为Babel无法做任何事情,也不能,并且你被迫等待依赖于左键盘的每个模块develloper更新他们的代码。
答案 2 :(得分:-1)
问题的npm Blog article应该回答您的大部分问题。