【发布时间】:2017-06-09 01:00:57
【问题描述】:
我想创建一个 rake 任务来编译一些引用 gems 中 @import 的 SASS 文件,以加快我的开发工作流程。
一些背景
我们最近为我们的 Rails 应用程序添加了一个新主题,而 sass 样式表确实使开发环境中的资产管道陷入困境(以致经常导致超时)
主题在很大程度上依赖于导入和混合,尝试手动转换成文件非常乏味,我们可以按照一些指南的建议 *= require。
这些文件是相对静态的,所以没有什么理由应该在每个请求上编译它们但是我有其他经常使用的资产,所以我不想依赖rake assets:precompile)
所有主题都包含在一个文件 (theme/base.scss) 中,而 @imports 所有其余部分,所以我想一个简单的解决方案是将该文件从 application.css 中取出并创建一个 rake 任务theme:precompile 将其编译为 theme.css,然后 application.css 需要它
这样,如果我们确实需要调整主题文件,我们可以更新它并运行 rake 任务,然后资产管道只有一个简单的静态 css 文件可供使用。
起初,我尝试设置一个简单地调用 sass 的 rake 文件
desc 'Precompile the theme SASS to save on development time'
task :precompile do |t, args|
dir = 'app/assets/stylesheets/'
source = 'theme/base.scss'
dest = 'theme.css'
source_path = dir + src
dest_path = dir + dst
puts "Precomipling #{source_path} to #{dest} ..."
`sass "#{source_path}" "#{dest_path}"`
end
但这失败了,因为主题依赖于 bootstrap-sass gem,给了
Error: File to import not found or unreadable: bootstrap-sprockets.
所以看来我的 rake 任务需要加载整个 sprockets 环境,或者弄清楚如何告诉 SASS bootstrap-sass gem 在哪里。
这可能吗?还是有更好的解决方案?
【问题讨论】:
标签: ruby-on-rails sass rake sprockets