【问题标题】:Should bower_components be gitignored?bower_components 应该被忽略吗?
【发布时间】:2014-03-11 13:52:17
【问题描述】:

只保留bower.json 文件并gitignore 整个bower_components 目录是否是一种好习惯?

【问题讨论】:

  • 我刚刚注意到一个 Symfony's official cookbook 实际上回答了这个确切的问题,引用“目前,您可能应该提交 Bower 下载的资产,而不是将目录添加到您的 .gitignore 文件中”跨度>

标签: git gitignore bower


【解决方案1】:

official Bower page 声明:

注意如果您不是在创作一个打算供其他人使用的包(例如,您正在构建一个网络应用程序),您应该始终check installed packages into source control。

请务必查看报价中的链接,它讨论了一些利弊。它提到的主要优点是签入它们可确保您的依赖项始终可用,只要您的存储库可用。无论 Bower、GitHub 或其他任何需要的东西发生什么。

【讨论】:

  • 感谢这篇有趣的文章。所以现在我们仍然没有相当于冻结版本的“锁定文件”。
  • @PierredeLESPINAY 仅适用于顶层。缺少的是与 npm shrinkwrap 功能等效的功能。
  • 他们也在他们的博客文章中这样说“最终,是否签入所有 /bower_components 目录的选择取决于您......”。
  • 签入它们的原因是有一天图书馆可能会从互联网上消失,或者它们可能会出现一些停机时间,这反过来又会导致构建失败。作为一个 Maven/Gradle 用户,我从没想过签入依赖项。
  • 官方 Bower 页面上关于将已安装软件包检查到源代码控制中的建议已于 2014 年删除:github.com/bower/bower.github.io/commit/…
【解决方案2】:

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

.gitignore

node_modules
dist
.tmp
.sass-cache
bower_components

【讨论】:

    【解决方案3】:

    这两种方法都有时间和地点。对于 Yeoman 来说,依赖 bower.json 是合适的,因为它是工具链中的一个工具,需要与 bower 生态系统一起生存和呼吸。对于可部署的 Web 应用,提交依赖项并保持更多控制通常是一种很好的做法。

    这里有一个 good article 我喜欢讨论这个问题。

    【讨论】:

      【解决方案4】:

      如果您将 Grunt 和 Node 与 Bower 一起使用,则将 bower_components 放在 .gitignore 中是有意义的,因为当您运行 grunt serve 或 grunt build 它会为你处理依赖关系,我相信这就是为什么在 Yeoman 中他们将它添加到 .gitignore

      【讨论】:

        【解决方案5】:

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

        我发现 www/index.html 是 app/index.html 的缩小版。 app 目录及其内容(包括 bower_components)包含输出目录 (www) 所需的源文件。您将源目录提交到源代码控制(即 git)而不是生成的文件(即 www)。 bower 和 npm 之类的包管理器旨在在构建/生成阶段使用,它们的工件并不意味着要检查到源代码控制中。

        最终,您签入 git 的源代码是构建项目其余部分以进行开发或部署所需的最低配置。

        【讨论】:

          【解决方案6】:

          如果您使用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

          【讨论】:

            猜你喜欢
            • 2016-01-17
            • 1970-01-01
            • 2020-07-27
            • 1970-01-01
            • 2016-08-27
            • 2011-12-23
            • 1970-01-01
            • 1970-01-01
            • 2012-11-22
            相关资源
            最近更新 更多