如何在 middleman4 中导入 .scss.erb 文件?

How do I import a .scss.erb file in middleman4?

如何在 Middleman 4 中导入 .scss.erb 文件?

我刚从 Middleman 3 升级到 4。我认为这是我的最后一期...

我有一个 all.css.scss 文件,如下所示:

@charset "utf-8";

@import "settings";
@import "imports";
@import "base";
@import "signature_pad"

除导入外的所有文件导入。

settings的区别在于它是_imports.scss.erb

然后当我尝试加载 all.css 时,我得到了这个:

Error: File to import not found or unreadable: imports.
       Load paths:
         /Users/myMyserId/apps/projectName/source/assets/css
         /Users/myUserId/.rvm/gems/ruby-2.0.0-p451/gems/compass-core-1.0.3/stylesheets
         Compass::SpriteImporter
         /Users/myUserId/apps/projectName/source/assets/css
         /Users/myUserId/.rvm/gems/ruby-2.0.0-p451/gems/compass-core-1.0.3/stylesheets
         Compass::SpriteImporter
         /Users/myUserId/apps/projectName/source/assets/css
         /Users/myUserId/.rvm/gems/ruby-2.0.0-p451/gems/compass-core-1.0.3/stylesheets
         Compass::SpriteImporter
        on line 4 of /Users/myUserId/apps/projectName/source/assets/css/all.css.scss

我认为问题是 erb 在将文件变成 .scss 之前没有处理文件。

The difference with settings is that it is _imports.scss.erb

这是你的问题。 Middleman 本身不涉及任何带前导下划线的内容。 .scss 文件被处理,因为那是 SASS 做的工作。

我正在使用的解决方案(直到我找到另一个)是构建第二个 css 文件并将其包含在我的布局中。

对于您的情况,您可以尝试删除下划线;如果没有 .css 后缀,它不应包含在输出中。

这是一个让它工作的例子:

// all.css.scss.erb

<%= partial './_settings.scss' %>

// rest of css…

设置文件为

  • 名为_settings.scss.erb
  • 作为 all.css.scss
  • 的同级文件
  • 然后它可以包含erb代码! :)

也就是说,我强烈建议研究 Middleman 4 中的外部管道功能。它非常强大,可以更好地处理 SASS/SCSS。

每个 this forum post 添加链轮使导入像以前一样工作。

在 Gemfile 中,添加链轮和一个 rails-assets 块,其中包含从步骤 1 中选择的 gemfile:

# Gemfile
gem 'middleman-sprockets', '4.0.0.rc.3'

source 'https://rails-assets.org' do
  gem 'rails-assets-bootstrap-autohidingnavbar', '1.0.0'
  gem 'rails-assets-jquery', '2.1.1'
  gem 'rails-assets-slick.js', '1.5.7'
end

在您的 config.rb 中,添加以下块以启用资产管道并将 RailsAssets gem 添加到您的加载路径:

# config.rb
# General configuration
activate :sprockets

if defined? RailsAssets
  RailsAssets.load_paths.each do |path|
    sprockets.append_path path
  end
end