是否应该忽略bower_components?


Answers:


149

负责人鲍尔页指出:

注意:如果您没有编写要供他人使用的软件包(例如,您正在构建Web应用程序),则应始终将已安装的软件包检入源代码管理中

确保检查引号中的链接,其中讨论了一些利弊。它提到的主要优点是,只要存储库可用,检入它们就可以确保您的依赖项始终可用。无论Bower,GitHub发生什么情况,否则将需要其他任何方法。


1
感谢您提供这篇有趣的文章。因此,到目前为止,我们还没有等效于冻结版本的“锁定文件”。
Pierre de LESPINAY 2014年

1
@PierredeLESPINAY仅适用于顶层。缺少的是等效于npmrinkwrap功能。
passy 2014年

3
他们还在博客文章中说:“最终,是否要签入所有/ bower_components目录由您决定...”。
克里希那拉

3
检入它们的原因是,有一天图书馆可能会从互联网上消失,或者它们可能由于停工而导致构建失败。作为Maven / Gradle用户,我从不考虑签入依赖项。
克里希那拉

7
2014年,移除了Bower官方页面上用于检查已安装软件包以检查其源代码控制的建议:github.com/bower/bower.github.io/commit/…– 2016
用户

52

新生成的Yeoman AngularJS项目中的.gitignore文件列出了bower_components(和node_modules)被忽略(如果您不知道Yeoman,它是现代Web应用程序的一个非常有名的Web脚手架工具,对我来说已经足够了!):

.gitignore

node_modules
dist
.tmp
.sass-cache
bower_components

9

两种方法都有时间和地点。对于Yeoman来说,依靠bower.json是合适的,因为它是工具链中的工具,需要与Bower生态系统保持互动。对于可部署的Web应用程序,通常的做法是提交依赖关系并保持更多控制权。

这是我喜欢的一篇不错的文章,对此进行了讨论。


6

如果您将Grunt和Node与Bower一起使用,则放置 bower_components放在.gitignore中因为当您运行grunt服务grunt构建时,它将为您处理依赖项,我确定这就是为什么在Yeoman中将它们添加到.gitignore


5

发电机预先装满了的.gitignore与bower_components文件,但它也预填充其他目录我认为将需要一个最终的应用程序(如www),所以我做了一些研究。

我发现www / index.html是app / index.html的缩小版本。应用程序目录及其内容(包括bower_components)包含输出目录(www)所需的源文件。您将源目录提交到源代码管理(即git)中,而不提交到生成的文件(即www)中。诸如bower和npm之类的程序包管理器应在构建/生成阶段使用,而其工件则无意进入源代码控制。

最终,您检入git的源是为开发或部署目的而构建其余项目所需的最低配置。


0

如果使用Shawn Lonas编写的bower-locker创建锁定文件,则最好忽略/bower_componentsdir并仅检入bower.jsonbower-locker.bower.jsonfile 。

在创建Bower-Locker之前,存在一个缺点,那就是由于Bower 没有收缩包装功能,但是可以通过上述库来缓解。

运行以下命令以实现它:

npm install bower-locker -g

要么

yarn global add bower-locker

然后bower.json通过运行以下命令基于现有文件生成锁定文件:

bower-locker lock

原始bower.json文件将重命名为bower-locker.bower.json

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.