【问题标题】:Gulp error with gulp-compass : You must compile individual stylesheets from the project directorygulp-compass 的 Gulp 错误:您必须从项目目录编译单个样式表
【发布时间】:2014-07-12 15:45:25
【问题描述】:

我尝试运行 gulp 任务来编译我的 sass 项目,但由于我创建了子文件夹 app/assets/ 并将我的源文件放入其中,所以我遇到了问题。在 sass 和 css 文件夹与我的 gulpfile 位于同一目录之前,它运行良好。如果我在基本目录上运行 compass watch 命令,我没有问题,这仅适用于 gulp-compass。

输出:

Devnco: /Users/Devnco/Web/maquette ->gulp sass
[gulp] Using gulpfile ~/Web/maquette/gulpfile.js
[gulp] Starting 'sass'...
[gulp] Finished 'sass' after 6.12 ms
[gulp] You must compile individual stylesheets from the project directory.
[gulp] Plumber found unhandled error: [gulp] Error in plugin 'gulp-compass': Compass failed
[gulp] You must compile individual stylesheets from the project directory.
[gulp] Plumber found unhandled error: [gulp] Error in plugin 'gulp-compass': Compass failed
[gulp] You must compile individual stylesheets from the project directory.
[gulp] Plumber found unhandled error: [gulp] Error in plugin 'gulp-compass': Compass failed

我的 gulpfile.js :

var paths = {
    css: './app/assets/css',
    sass: './app/assets/sass/*.scss',
    js: './app/assets/js',
    images: './app/assets/images'
}

gulp.task('sass',function(){

    gulp.src(paths.sass)
        .pipe(plumber())
        .pipe(compass({
            css: paths.css,
            sass: paths.sass
        }))
        .pipe(gulp.dest(paths.css))
        .pipe(minifyCss())
        .pipe(rename({ extname: '.min.css'}))
        .pipe(gulp.dest(paths.css));
});

我的工作目录:

gulpfile.js
app/
    assets/
        fonts/
        images/
        sass/
        css/
    pages/
        etc…

我的 package.json 和我使用的版本(最新)

"devDependencies": {
  "gulp": "^3.6.2",
  "gulp-compass": "^1.1.9",
  "gulp-concat": "^2.2.0",
  "gulp-minify-css": "^0.3.4",
  "gulp-plumber": "^0.6.2",
  "gulp-rename": "^1.2.0"
}

我做了一些搜索,但仍然没有找到问题所在。

提前致谢。

【问题讨论】:

    标签: compass-sass gulp


    【解决方案1】:

    我用它来编译我的指南针文件,它工作正常,它来自 gulp-compass 文档

    如果你没有使用 config.rb

    var compass = require('gulp-compass'),
      path = require('path');
    
    gulp.task('compass', function() {
      gulp.src('./src/*.scss')
      .pipe(compass({
        project: path.join(__dirname, 'assets'),
        css: 'css',
        sass: 'sass'
      }))
      .pipe(gulp.dest('app/assets/temp'));
    });
    

    如果你使用的是 config.rb

    var compass = require('gulp-compass');

    gulp.task('compass', function() {
      gulp.src('./src/*.scss')
      .pipe(compass({
        config_file: './config.rb',
        css: 'stylesheets',
        sass: 'sass'
      }))
      .pipe(gulp.dest('app/assets/temp'));
    });
    

    【讨论】:

    • 您是否保留 __dirname 原样?还是用您自己的目录名称更新?
    【解决方案2】:

    今晚我也遇到了这个问题。我通过更改我的 config.rb 路径来修复它。试试

    .pipe(compass({
      config_file: './config.rb',
      css: paths.css,
      sass: paths.sass
    }))
    

    如果您没有/想要使用 config.rb,我相信您必须像 https://www.npmjs.org/package/gulp-compass 的“加载没有 config.rb 的配置”部分一样设置项目根目录

    【讨论】:

      【解决方案3】:

      我也遇到了这个问题,我发现项目路径需要指向包含css,scss文件夹的文件夹。例如:

      app /
        - src /
            - css /
            - sass /
      

      鉴于上述结构,您的配置应如下所示:

      project: "app/src",
      css: "css",
      sass: "sass"
      

      当我的项目路径高一级时出现错误,使我的 css 属性看起来像:"src/css"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        • 2013-10-25
        • 1970-01-01
        • 2015-02-08
        • 1970-01-01
        • 1970-01-01
        • 2014-11-22
        相关资源
        最近更新 更多