6

如何在 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 之前并未对其进行处理。

4

3 回答 3

6

与设置的区别在于它是_imports.scss.erb

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

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

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

于 2016-04-05T03:29:40.567 回答
2

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

// all.css.scss.erb

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

// rest of css…

随着设置文件是

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

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

于 2016-07-24T17:10:01.290 回答
2

根据这个论坛帖子添加 Sprockets可以让导入像以前一样工作。

在 Gemfile 中,使用从步骤 1 中选择的 gemfile 添加 sprockets 和 rails-assets 块:

# 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
于 2016-07-31T17:37:49.943 回答