Sprockets 在找到 v3.3.4 时找不到 bootstrap v3.3.5

Sprockets can't find bootstrap v3.3.5 while it finds v3.3.4

我正在开发 Rails 应用程序 (v4.2.1),它在 vendor/assets/components/bootstrap.

上安装了 bootstrap

一切顺利,直到我将 bootstrap 从 v3.3.4 升级到 v3.3.5。

现在我看到一个错误页面显示 couldn't find file 'bootstrap' with type 'text/css' .

这是我的 app/assets/stylesheets/application.css:

/*
 *= require_tree .
 *= require bootstrap
 *= require fontawesome
 *= require_self
 */

如果我将 bootstrap 降级到 v3.3.4,这个错误就会消失。有什么建议吗?

[更新]

我使用 bower install 命令安装了 boostrap。以下是我的.bowerrc:

{
  "directory": "vendor/assets/components"
}

我有一个这样的目录树:

vendor
  + assets
    + components
      + bootstrap
        + dist
        + fonts
        + grunt
        + js
        + less
        + .bower.json
        + ...

sprockets版本为3.2.0。我还使用 sprockets-rails 2.3.2 和 sprockets-es6 0.6.2.

我找到问题的原因了。

v3.3.5 开始,bootstrap 团队更改了 bower.jsonmain 部分。之前,它有这些项目:

"less/bootstrap.less",
"dist/css/bootstrap.css",
"dist/js/bootstrap.js",
"dist/fonts/glyphicons-halflings-regular.eot",
"dist/fonts/glyphicons-halflings-regular.svg",
"dist/fonts/glyphicons-halflings-regular.ttf",
"dist/fonts/glyphicons-halflings-regular.woff",
"dist/fonts/glyphicons-halflings-regular.woff2"

现在只有两项:

"less/bootstrap.less",
"dist/js/bootstrap.js"

大家可以关注https://github.com/twbs/bootstrap/issues/16663. Put simply, they applied this change in accordance with the new bower specs https://github.com/bower/bower.json-spec/pull/43上的相关讨论。目前,Sprockets 只能找到 bower.jsonmain 部分中列出的文件。那是我的问题。

因此,为了解决这个问题,我将 application.css 更改为:

/*
 *= require_tree .
 *= require bootstrap/dist/css/bootstrap
 *= require fontawesome
 *= require_self
 */

一个基本的解决方案是对 https://github.com/rails/sprockets.

的拉取请求