NPM允许我们指定bundledDependencies
,但这样做有什么好处? 我想,如果我们要绝对确保我们得到即使我们引用模块被删除正确的版本,或者没有与捆绑的速度好处?
任何人都知道的优点bundledDependencies
过正常的依赖呢?
NPM允许我们指定bundledDependencies
,但这样做有什么好处? 我想,如果我们要绝对确保我们得到即使我们引用模块被删除正确的版本,或者没有与捆绑的速度好处?
任何人都知道的优点bundledDependencies
过正常的依赖呢?
其中一个最大的问题,现在有节点的是它是如何快速变化。 这意味着,生产系统是非常脆弱和npm update
可以轻松突破的事情。
使用bundledDependencies是一种通过确保,当你正确地猜测,你将永远提供正确的依赖关系,不管还有什么可以改变,以避开这个问题。
您也可以使用这个捆绑了自己的私人束,并且安装拯救他们。
对于快速阅读 :这个QA是对的package.json bundledDependencies场, 不是关于包 。
“bundledDependencies”是什么顾名思义。 依赖性,应该是你的项目中。 因此,功能基本相同,正常的依赖关系。 运行时,它们也将被打包npm pack
。
普通的依赖通常是从故宫注册表安装。 因此捆绑依赖关系时有用:
通过这种方式,您不必创建(和维护)自己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
,除其他事项。
npm shrinkwrap
的大部分时间,有时把整个事情,包括node_module文件夹,进入你的代码库。 或者可能使用shrinkpack 。 当时的最佳做法是在讨论node.js的博客 ,并在Joyent的开发者网站。 这是问题的范围之外了一点,但我想提的最后一种依赖关系(据我所知): 同行的依赖 。 另见本相关的问题,SO和可能的文档的yarn
上bundledDependencies 。
另一个优点是,你可以把你的内部依赖关系(应用程序组件)那里,然后只是要求他们在你的应用程序就好像它们是独立的模块,而不是塞满您的lib /,并将其发布到NPM。
如果/当他们成熟,他们可以住了作为单独模块的时候,你可以把它们放在故宫容易,而无需修改代码。
我很惊讶,我没有看到这个已经在这里,但精心挑选的时候, bundledDependencies
可用于生产从分发包npm pack
,将其中一个系统上运行npm
没有配置。 这是有益的,如果你有,例如,这不是在互联网上联网/不是一个系统:把你的包在一个拇指驱动器(或其他)并解压压缩包,然后npm run
或node index.js
,它就可以工作。
也许有一个更好的方式来捆绑你的应用程序运行“离线”,但如果我还没有找到它。
操作上,我看bundledDependencies作为一个模块的专用模块商店,这里的依赖性是比较公开的,你的模块和它的依赖(和子依赖性)中解决。 您的模块可能依赖于旧版本的,比如说反应,但依赖需要最新的,和最伟大的。 你的包/安装将导致您的固定版本node_modules/$yourmodule/node_modules/react
,而你的依赖会得到他们的版本node_modules/react
(或node_modules/$dependency/node_modules/react
,如果他们是这样的倾向)。
一个警告:我最近遇到了一个依赖未正确配置其上反应的依赖,并具有bundledDependencies发生反应引起的相关模块在运行时出现故障。