【问题标题】:Create rake task to compile SASS file that @import's from gem创建 rake 任务以编译来自 gem 的 @import 的 SASS 文件
【发布时间】: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


    【解决方案1】:

    我没有找到我提出的问题的答案。

    最后,我的解决方法是将@imports 拉到一个单独的文件中,该文件保留在资产管道中,并在我的问题中使用了 raketask。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      相关资源
      最近更新 更多