2013-06-19 63 views
27

Bower docs says为什么要在凉亭组件?

N.B.如果您未创作旨在供他人使用的软件包(例如,您正在构建Web应用程序),则应始终将已安装的软件包检入源代码管理。

有没有人有一个很好的答案为什么?

如果我想提出一个web应用程序,我不希望我的回购堆满了图书馆X的版本更新

我只是想更新bower.json依赖。我认为大多数项目都会有一个构建步骤或类似的,例如咕噜声。构建步骤将确保在构建之前调用bower安装/更新,以便这些文件用于连续/缩小等,或者甚至是简单复制到某个dist文件夹。

我错过了什么吗?

回答

28

这是锁定您的依赖项,以防止依赖关系不良打破您的应用程序或远程被阻止部署。即使你有构建步骤,也可能发生这种情况,因为你可能没有对每个构建进行全面测试,而自动化测试不能捕捉到所有内容,特别是不是可视化回归。多个开发人员也可能拥有不同版本的依赖关系。通过确保依赖关系,确保每个人都保持相同的版本。我还发现查看差异是确保在依赖关系树中没有引入恶意的好方法。

在节点世界npm shrinkwrap部分解决了这个问题,但还没有做校验和匹配。鲍尔目前有一个开放的ticket实施相同。

您可以在此博客帖子阅读更多关于它:Checking in front-end dependencies

+0

是的我想我可以使用1.2.3而不是〜1.2.3或类似的。 (或者,如果我信任库使用semver,那甚至可以)但是我想如果库X有bower.json依赖于库Y并且使用> = 2.3.4或类似的话,那我就麻烦了。将期待收缩包装功能。 –

+3

是的,因为标签和版本可以被覆盖,所以甚至深度锁定版本是不够的。这就是为什么'npm shrinkwrap'需要deps校验和匹配的原因,这就是我们从一开始就需要在Bower热缩包装中进行的。 –

+0

这与游戏开发的原因相同。您不必随时升级软件包,因此在特定版本中冻结或“缩小”它们是有意义的,以防延迟部署或构建。 –

0

这个答案非技术问题,而是一个实际的原因不凉亭的部件进行检查。

我宁可推荐bower包在bower.json中锁定,而不是检查这些包。因为相信我,你无法在电脑上下载和解包数千个文件。运行速度慢的计算机在非常大且深的文件路径中存在问题。在这个互联网的世界里,我相信下载软件包总是很容易,而不是随身携带。

这只是一个偏好问题。这一切都来自经验。我已经在Github上使用了bower组件进行了一个项目检查,并且在上传和下载时更糟糕。我通过一个相对较新的Mac做到了。