供应商资产是否应包含在带有bower + rails的版本控制中?

时间:2014-06-24 02:11:20

标签: javascript ruby-on-rails ruby-on-rails-4 bower assets

我已经开始使用bower-rails来管理我的rails项目中的css / js资产。 默认情况下,依赖关系安装在vendor/assets/bower_components中。 问题是凉亭复制整个包裹,包括来源,示例,许可证等 我没有问题摆脱所有这些文件,但我想知道是否有必要包括甚至重要文件,因为我认为应该是程序员负责在加载项目的计算机中加载这些依赖(也许有咕噜声?),除了假设你不应该触摸供应商包,因为它们不是你的责任(关于我想要删除的所有那些糟糕的文件)。
我的观点是:是否存在与凉亭包和版本控制相关的任何“最佳实践”?

2 个答案:

答案 0 :(得分:1)

我最近第一次使用了bower-rails,让Git忽略了vendor/assets/bower_components目录,效果很好。

如果您选择让Git忽略bower_assets,那么应该在bower.json中指定每个库的已知良好版本,而不是使用latest来避免版本冲突。

答案 1 :(得分:0)

我在我的Rails 4.2.x应用程序中使用bower和bower-installer,而不使用任何gems用于javascript依赖。我还在使用资产管道。

我将vendor / assets / bower_components添加到我的.gitignore文件中。我使用bower-installer将我需要的内容复制到vendor/assets/{javascripts,stylesheets},其中在源代码管理中。

我认为这给了我两全其美:JS库的版本控制,因此更新相对容易,但生产部署没有机会失败,因为有人删除了' leftpad'来自节点repo。

这是我的bower.json文件的精简版(在源代码管理中)。请注意,jquery-form不在bower repo中,所以我包含了下载文件的路径。

{
  "name": "icots",
  "main": "",
  "private": true,
  "ignore": [
    "**/.*",
    "bower_components",
    "vendor/assets/bower_components",
    "lib"
  ],
  "dependencies": {
    "jquery": "^3.1.1",
    "jquery-ui": "^1.12.1",
    "jquery.form": "http://malsup.github.io/min/jquery.form.min.js"
  },
  "install": {
    "path": {
      "js": "vendor/assets/javascripts",
      "css": "vendor/assets/stylesheets",
      "/[sc|le]ss$/": "vendor/assets/stylesheets"
    },
    "sources": {
      "jquery": "vendor/assets/bower_components/jquery/dist/jquery.min.js",
      "jquery-ui": "vendor/assets/bower_components/jquery-ui/jquery-ui.min.js",
      "jquery-form": "vendor/assets/bower_components/jquery.form/index.js"
    }
  }
}