【问题标题】:Compress non digested SASS assets rails压缩未消化的 SASS 资产轨道
【发布时间】:2016-10-13 06:29:11
【问题描述】:

我有一些资产需要保留在资产管道之外,但仍需要压缩,特别是一些 SASS 文件。我已经为我的未消化 JS 实现了这一点,它看起来像这样:

Dir["#{Rails.root}/app/assets/javascripts/non_digest/*"].each do |asset|
   asset_name = File.basename(asset)
   asset_output = "#{Rails.root}/public/external/#{asset_name}"
   asset_uglified = Uglifier.compile(File.read(asset))
   File.open(asset_output, 'w') {|a| a.write(asset_uglified) }
end

这包含在我的初始化程序中。

是否可以使用 Sprockets 对我未消化的 SASS 文件执行相同的操作?我快速浏览了Sprockets::SassCompressor,但到目前为止还没有让它工作。

【问题讨论】:

    标签: ruby-on-rails sass asset-pipeline sprockets


    【解决方案1】:

    如果您安装了 sass gem,您可以执行以下操作:

    Dir["#{Rails.root}/app/assets/stylesheets/non_digest/*"].each do |asset|
      asset_name = File.basename(asset)
      asset_output = "#{Rails.root}/public/external/#{asset_name.gsub('.scss', '.css')}"
      asset_minified = Sass::Engine.new(File.read(asset), syntax: :scss, style: :compressed).render
      File.open(asset_output, 'w') {|a| a.write(asset_minified) }
    end
    

    【讨论】:

      【解决方案2】:

      您是否尝试过使用 sprockets-sass gem ?它适用于 SASS 和 SCSS 。目前仅支持 sprockets 2.x 和 3.x 。它还提供了一个压缩机。

      【讨论】:

      • 嗨@rada 我最终使用了sass gem 提供的Sass::Engine 来完成这项工作!
      • 好的。但是 sprockets-sass 有一些附加功能,允许您从全局目录中导入深度嵌套的文件。并且还有一个用于缓存文件的缓存存储。如果这些文件具有关联的引擎或转换器,则导入器甚至可以导入其他类型的文件。你真的应该检查一下。免责声明:我是该宝石的贡献者:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2015-02-12
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多