在故宫中的正常依赖bundledDependencies的优点(Advantages of bund

2019-07-30 03:11发布

NPM允许我们指定bundledDependencies ,但这样做有什么好处? 我想,如果我们要绝对确保我们得到即使我们引用模块被删除正确的版本,或者没有与捆绑的速度好处?

任何人都知道的优点bundledDependencies过正常的依赖呢?

Answer 1:

其中一个最大的问题,现在有节点的是它是如何快速变化。 这意味着,生产系统是非常脆弱和npm update可以轻松突破的事情。

使用bundledDependencies是一种通过确保,当你正确地猜测,你将永远提供正确的依赖关系,不管还有什么可以改变,以避开这个问题。

您也可以使用这个捆绑了自己的私人束,并且安装拯救他们。



Answer 2:

对于快速阅读 :这个QA是对的package.json bundledDependencies场, 不是关于包 。

什么bundledDependencies做

“bundledDependencies”是什么顾名思义。 依赖性,应该是你的项目中。 因此,功能基本相同,正常的依赖关系。 运行时,它们也将被打包npm pack

当使用它们

普通的依赖通常是从故宫注册表安装。 因此捆绑依赖关系时有用:

  • 你想重新使用第三方库,没有来自NPM注册表或修改
  • 你想重新使用自己的项目,模块
  • 要一些文件与你的模块发布

通过这种方式,您不必创建(和维护)自己NPM库,但让你从NPM包得到同样的好处。

使用捆绑的依赖

开发时,我不认为主要的一点是,以防止意外的更新虽然。 我们有更好的工具对于这一点,即代码库(git的,反复无常,SVN ...)或现在的锁文件。

要固定你的包的版本,你可以使用:

  • 选项1:使用较新的版本NPM 5自带的节点8.它采用package-lock.json文件(见节点博客和节点8日发布)

  • 选项2:使用纱代替npm 。 这是来自Facebook的软件包管理器,速度比npm ,它使用一个yarn.lock文件。 它使用相同package.json否则。

这可比在其他包管理器一样捆扎机或货物的lockfiles。 它类似于NPM的NPM-shrinkwrap.json,但是这不是有损并创建可重复的结果。

npm实际复制该功能从yarn ,除其他事项。

  • 选项3:这是以前建议的方法,我不推荐了。 当时的想法是使用npm shrinkwrap的大部分时间,有时把整个事情,包括node_module文件夹,进入你的代码库。 或者可能使用shrinkpack 。 当时的最佳做法是在讨论node.js的博客 ,并在Joyent的开发者网站。

也可以看看

这是问题的范围之外了一点,但我想提的最后一种依赖关系(据我所知): 同行的依赖 。 另见本相关的问题,SO和可能的文档的yarn上bundledDependencies 。



Answer 3:

另一个优点是,你可以把你的内部依赖关系(应用程序组件)那里,然后只是要求他们在你的应用程序就好像它们是独立的模块,而不是塞满您的lib /,并将其发布到NPM。

如果/当他们成熟,他们可以住了作为单独模块的时候,你可以把它们放在故宫容易,而无需修改代码。



Answer 4:

我很惊讶,我没有看到这个已经在这里,但精心挑选的时候, bundledDependencies可用于生产从分发包npm pack ,将其中一个系统上运行npm没有配置。 这是有益的,如果你有,例如,这不是在互联网上联网/不是一个系统:把你的包在一个拇指驱动器(或其他)并解压压缩包,然后npm runnode index.js ,它就可以工作。

也许有一个更好的方式来捆绑你的应用程序运行“离线”,但如果我还没有找到它。



Answer 5:

操作上,我看bundledDependencies作为一个模块的专用模块商店,这里的依赖性是比较公开的,你的模块和它的依赖(和子依赖性)中解决。 您的模块可能依赖于旧版本的,比如说反应,但依赖需要最新的,和最伟大的。 你的包/安装将导致您的固定版本node_modules/$yourmodule/node_modules/react ,而你的依赖会得到他们的版本node_modules/react (或node_modules/$dependency/node_modules/react ,如果他们是这样的倾向)。

一个警告:我最近遇到了一个依赖未正确配置其上反应的依赖,并具有bundledDependencies发生反应引起的相关模块在运行时出现故障。



文章来源: Advantages of bundledDependencies over normal dependencies in npm