【发布时间】:2014-03-11 13:52:17
【问题描述】:
只保留bower.json 文件并gitignore 整个bower_components 目录是否是一种好习惯?
【问题讨论】:
-
我刚刚注意到一个 Symfony's official cookbook 实际上回答了这个确切的问题,引用“目前,您可能应该提交 Bower 下载的资产,而不是将目录添加到您的
.gitignore文件中”跨度>
只保留bower.json 文件并gitignore 整个bower_components 目录是否是一种好习惯?
【问题讨论】:
.gitignore 文件中”跨度>
注意如果您不是在创作一个打算供其他人使用的包(例如,您正在构建一个网络应用程序),您应该始终check installed packages into source control。
请务必查看报价中的链接,它讨论了一些利弊。它提到的主要优点是签入它们可确保您的依赖项始终可用,只要您的存储库可用。无论 Bower、GitHub 或其他任何需要的东西发生什么。
【讨论】:
新生成的YeomanAngularJS 项目中的 .gitignore 文件列出了要忽略的 bower_components(和 node_modules)(如果您不知道 Yeoman,它是一个非常有名的 Web 脚手架工具现代网络应用程序,所以这对我来说已经足够了!):
.gitignore
node_modules
dist
.tmp
.sass-cache
bower_components
【讨论】:
这两种方法都有时间和地点。对于 Yeoman 来说,依赖 bower.json 是合适的,因为它是工具链中的一个工具,需要与 bower 生态系统一起生存和呼吸。对于可部署的 Web 应用,提交依赖项并保持更多控制通常是一种很好的做法。
这里有一个 good article 我喜欢讨论这个问题。
【讨论】:
如果您将 Grunt 和 Node 与 Bower 一起使用,则将 bower_components 放在 .gitignore 中是有意义的,因为当您运行 grunt serve 或 grunt build 它会为你处理依赖关系,我相信这就是为什么在 Yeoman 中他们将它添加到 .gitignore
【讨论】:
Yeoman 生成器用 bower_components 预填充了 .gitignore 文件,但它也预填充了我认为最终应用程序需要的其他目录(如 www),所以我做了一些研究。
我发现 www/index.html 是 app/index.html 的缩小版。 app 目录及其内容(包括 bower_components)包含输出目录 (www) 所需的源文件。您将源目录提交到源代码控制(即 git)而不是生成的文件(即 www)。 bower 和 npm 之类的包管理器旨在在构建/生成阶段使用,它们的工件并不意味着要检查到源代码控制中。
最终,您签入 git 的源代码是构建项目其余部分以进行开发或部署所需的最低配置。
【讨论】:
如果您使用Shawn Lonas 编写的bower-locker 创建锁定文件,最好忽略/bower_components 目录并仅签入bower.json 和bower-locker.bower.json 文件。
在创建 bower-locker 之前,有一个由 bower not having shrinkwrap capability 问题引起的缺点,但可以通过上述库来缓解。
运行以下命令来实现它:
npm install bower-locker -g
或
yarn global add bower-locker
然后通过运行基于现有的bower.json文件生成锁定文件:
bower-locker lock
原来的bower.json文件将被重命名为bower-locker.bower.json
【讨论】: