所以我有一個項目,特定於頁面的樣式和css。我已經把這些文件放到了他們自己的目錄assets/#{type}/page-specific/
,我試圖編寫一個正則表達式規則來通知預編譯器與他們做這件事。Rails 3 - 預編譯文件夾中的所有css,sass和scss文件
這對於房子的JS方面非常有用,但是CSS證明更加困難。
# page specific style files:
app/assets/stylesheets/page-specific/something.css.sass
app/assets/stylesheets/page-specific/default.css
app/assets/stylesheets/page-specific/home.css.scss
我在我的config/initializers/assets.rb
文件,此正則表達式的工作:
Rails.application.config.assets.precompile << /(page-specific\/[^(css)]+.css)/
的問題是,該[^(css)]
部分沒有做我想做什麼比較,因爲它會過濾掉任何有交流或者在裏面。我真正想要的是一種匹配整個字符串「css」並停在那裏的方法。
另外,我知道傳統的看法是簡單地編寫樣式,以便不需要特定於頁面的樣式表而支持包含整個樣式表的application.css。我同意。然而,這是一個非常龐大的代碼庫,將Rails升級帶回家需要花費很多時間,並且沒有時間花費分析和重構這種性質的東西。
我試過讓分隔符指令[^\.]
停在第一個點上,但是這在一些供應商的樣式表上發生了變化,這些樣式表使用點作爲分隔符,如jquery.treeview.css.sass
。顯然,我可以更改文件名,但是我們是一支規模不斷擴大的團隊,我希望儘可能靈活地制定規則,這樣我們就不會有任何文件潛入,當他們沒有得到時,這些文件就會被炸燬預編譯。
你有 「* = require_tree。」在你的app/assets/stylesheets/application.css中的某處?如果沒有,嘗試添加它可能會有所幫助。 – rootless
正如所解釋的那樣,在完整應用程序範圍之外的資源需要預編譯並單獨包含。 – DVG
所有這三個示例文件路徑似乎都不在「完整應用程序的範圍之外」(如果這意味着「在應用程序的目錄樹之外」)。實際上,默認情況下,它們應該通過資產預編譯來獲取,因爲它們在應用程序/資產中(如果require_tree存在於application.css中)。我想我錯了。 – rootless