1

對於SO,已經有類似的問題,但沒有足夠清晰的回答來理解以下問題。Rails 5:Assets + Bower + Bootstrap Sass

我的目標是設置使用Bower的Bootstrap的Rails 5。

使用鮑爾我在該文件夾中安裝引導:

vendor/assets/bower_components/bootstrap-sass 

然後,我更新初始化/資產

Rails.application.config.assets.paths << Rails.root.join('vendor', 'assets', 'bower_components') 

然後,我添加了寶石 '青菜護欄'Gemfile和更新application.js

//= require jquery 
//= require bootstrap-sass/assets/javascripts/bootstrap 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

對JS的資產似乎運作良好:如果我加載http://localhost:3000/assets/application.js 我可以看到引導JS部分已經加入那裏。

的問題是關於薩斯(SCSS): 我加引導,青菜/資產/樣式表/引導到application.css.scss但沒有成功:

/* 
*= require_tree . 
*= require_self 
@import "bootstrap-sass/assets/stylesheets/bootstrap"; 
*/ 

其實,如果我加載http://localhost:3000/assets/application.css我看到:

/* 
@import "bootstrap-sass/assets/stylesheets/bootstrap"; 
*/ 

(在上@import指定的文件夾中包含許多_ * SCSS文件和文件夾的混入。)

問題是:

  • 你有什麼想法,爲什麼這是行不通的?
  • 我不應該看到assets/application.css所有的CSS預編譯?

PS: 任何資源,以瞭解這個問題將不勝感激。

回答

4

移動進口,所以它的/* .. */

/* 
*= require_tree . 
*= require_self 
*/ 

@import "bootstrap-sass/assets/stylesheets/bootstrap"; 
+0

由於@import不使用Rails資產管道,因此不起作用。 –

+0

@iceman ops,謝謝,很好看! –

+0

謝謝@JariJokinen,但實際上它正在工作。資產管道文檔說:「如果你想使用多個Sass文件,你通常應該使用Sass導入規則而不是這些Sprockets指令」。 –

1

外[刪除誤導性說明使用需要,而不是進口,因爲我是錯的。]

除了公認的答案,如果你查看bootstrap-sass/assets/stylesheets目錄,您會注意到沒有文件bootstrap.scss,而是一個帶有下劃線前綴的文件。

此外,通常最好從bootstrap-sass/assets/stylesheets/bootstrap/目錄而不是主要的_bootstrap.scss文件導入實際需要的模塊。

+0

感謝您的提示,它的工作原理以及@import「bootstrap-sass/assets/stylesheets/bootstrap」。我很想知道2種解決方案之間的區別。 –