保持 Sass 文件夹结构 Gulp/Compass

Keeping Sass Folder Structure with Gulp/Compass

我正在重组我的应用程序结构以适应学习 Angular 和模块化功能。即,将每个功能的 angular js、html 和 css 保持在一起。 到目前为止,我只有一个 sass 文件夹,里面装满了 scss 文件,这些文件被编译成 css 文件夹中的单个 css 文件。 gulp 文件很简单:

gulp.task('styles', function () {
  gulp.src('_components/sass/*.scss')
      .pipe(compass({
        config_file: 'config.rb',
        css: 'app/css',
        sass: '_components/sass'
      }))
      .on('error', errorLog)
      .pipe(gulp.dest('app/css'))
      .pipe(livereload());
});

我的 config.rb 文件如下所示:

project_type= :stand_alone
http_path = "/"
css_dir = "app/css"
sass_dir = "_components/sass"
javascripts_dir = "app/js"
images_dir = "img"
line_comments = false
preferred_syntax = :scss
output_style = :expanded
relative_assets = true

现在我正在使用 Angular,我想根据它们对应的功能将 scss 和 css 文件分开。与其将所有 scss 文件编译成一个 css 文件,我宁愿在我的 sass 文件夹中有一个文件夹结构,该文件夹结构在我的 css 文件夹中被模仿应用程序。

我试过将通配符添加到 sass 目录,如 sass: '_/components/sass/**/*'(在我的 config.rb 文件中也是如此)但是会产生错误:NoMethodError on line ["138"] of C: undefined method 'sub' for nil:NilClass

基本上,我不知道如何让 gulp/compass 识别我的 sass 文件夹中的文件夹结构并在 css 文件夹中模仿它。

感谢任何帮助! 谢谢! 马特

尝试在 gulp.src() 中使用 ** 而不是 sass_dirsass 选项:

gulp.task('styles', function () {
  gulp.src('_components/sass/**/*.scss')
    .pipe(compass({
      config_file: 'config.rb',
      css: 'app/css',
      sass: '_components/sass'
    }))
    .on('error', errorLog)
    .pipe(gulp.dest('app/css'))
    .pipe(livereload());
});