bal*_*ton 71 dependencies node.js npm
npm允许我们指定bundledDependencies但这样做有什么好处?我想如果我们想要确保我们得到正确的版本,即使我们引用的模块被删除,或者捆绑可能有速度优势?
有人知道bundledDependencies优于普通依赖关系的优势吗?
为方便起见,在这里提取bundledDependencies定义:
bundledDependencies
发布包时将捆绑的包名称数组.如果这拼写为"bundleDependencies",那么这也是光荣的.
例如
bundledDependencies
nha*_*nha 96
对于快速阅读器:此QA是关于 package.json bundledDependencies字段,而不是关于包.
"bundledDependencies"正是他们的名字所暗示的.应该在项目中的依赖关系.因此,功能与普通依赖项基本相同.他们也会在跑步时打包npm pack
.
通常从npm注册表安装正常依赖项.因此,捆绑的依赖项在以下情况下很有用
这样,您就不必创建(和维护)自己的npm存储库,而是获得与npm软件包相同的好处.
在开发时,我不认为主要的观点是防止意外更新.我们有更好的工具,即代码存储库(git,mercurial,svn ...)或现在锁定文件.
要固定软件包版本,您可以使用:
选项1:使用节点8附带的较新的NPM版本5.它使用package-lock.json
文件(请参阅节点博客和节点8版本)
选项2:使用纱线代替npm
.它是来自facebook的包管理器,比npm
它使用yarn.lock
文件更快.它使用相同的package.json
其他方式.
这与Bundler或Cargo等其他包管理器中的lockfiles相当.它类似于npm的npm-shrinkwrap.json,但它不是有损的,它可以产生可重复的结果.
npm
实际上从yarn
其他方面复制了该功能.
npm shrinkwrap
大多数时候都在使用,有时候把整个东西,包括node_module文件夹放到你的代码库中.或者可能使用shrinkpack.当时的最佳实践在node.js博客和joyent开发者网站上进行了讨论.这有点超出了问题的范围,但我想提一下最后一种依赖(我知道):对等依赖.另请参阅这个相关的SO问题,可能还有yarn
关于bundledDependencies的文档.
Jul*_*ght 39
现在Node最大的问题之一就是它的变化速度有多快.这意味着生产系统可能非常脆弱,并且npm update
很容易破坏.
使用bundledDependencies是一种解决此问题的方法,通过确保正确猜测,无论其他什么可能发生变化,您都将始终提供正确的依赖关系.
您还可以使用它来捆绑您自己的私有捆绑包并通过安装来提供它们.
Bor*_*rov 22
其他优点是你可以将你的内部依赖项(应用程序组件)放在那里,然后只需要在你的应用程序中将它们作为独立模块,而不是混乱你的lib /并将它们发布到npm.
如果/当它们成熟到可以作为单独的模块生存时,您可以轻松地将它们放在npm上,而无需修改代码.
我很惊讶我没有在这里看到这个,但是当仔细选择时,bundledDependencies
可以用来生成一个可分发的包,该包将在未配置的npm pack
系统上运行。npm
如果您有一个未联网/不在互联网上的系统,这会很有帮助:将您的软件包放在拇指驱动器(或其他设备)上并解压缩 tarball,然后npm run
或node index.js
它就可以工作了。
也许有更好的方法来捆绑您的应用程序以“离线”运行,但如果有的话我还没有找到。
归档时间: |
|
查看次数: |
33054 次 |
最近记录: |