应该bower_components gitignored?

只保留bower.json文件和gitignore整个bower_components目录是好的做法吗?

官方的鲍尔页面说:

注意:如果你没有编写一个打算供其他人使用的软件包(例如,你正在构build一个web应用程序),你应该总是将已安装的软件包检查到源代码控制中 。

请确保检查报价中的链接,它讨论了一些赞成和反对。 主要提到的是,检查它们确保您的依赖关系始终可用,只要您的存储库可用。 不pipeBower,GitHub或别的什么都需要。

新生成的Yeoman AngularJS项目中的.gitignore文件中列出的bower_components(和node_modules)被忽略(如果你不知道Yeoman,它是一个非常有声望的Web脚本工具,所以这对我来说已经足够了!):

的.gitignore

 node_modules dist .tmp .sass-cache bower_components 

有两种方法的时间和地点。 对于Yeoman而言,依靠bower.json是合适的,因为它是工具链中的一个工具,需要通过凉亭生态系统保持生活和呼吸。 对于可部署的Web应用程序来说,提交依赖关系并保持更多的控制通常是很好的做法。

这是一篇很好的文章,我喜欢这个。

如果你在Bower中使用Grunt和Node,把bower_components放在你的.gitignore中是有意义的,因为当你运行grunt serve或者grunt时,它将为你处理依赖关系,我确信这就是为什么在Yeoman中它们会被添加到.gitignore

Yeoman生成器预先填充了bower_components的.gitignore文件,但是它还预先填充了其他目录,我认为最终的应用程序将需要其他目录(比如www),所以我做了一些研究。

我发现www / index.html是app / index.html的缩小版本。 app目录及其内容(包括bower_components)包含输出目录(www)所需的源文件。 你提交源代码目录到源代码控制(即混帐),但没有生成的文件(即www)。 像bower和npm这样的软件包pipe理器是为了在构build/生成阶段被使用的,他们的工件并不意味着被检查到源代码控制中。

最终,你签入git的源代码是为开发或部署目的而构build其余项目所需的最低configuration。

如果您使用Shawn Lonas编写的bower-locker创buildlocking文件,那么忽略/bower_components dir并仅检查bower.jsonbower-locker.bower.json文件是很好的做法 。

在凉亭build立之前,由于凉亭没有收缩包装能力而引起的缺点,但是可以通过上述库来缓解。

运行以下命令来实现它:

 npm install bower-locker -g 

要么

 yarn global add bower-locker 

然后通过运行生成基于现有bower.json文件的locking文件:

 bower-locker lock 

原来的bower.json文件将被重新命名为bower-locker.bower.json