2014-05-16 15 views
7

Tôi thực sự đang cố gắng xây dựng một kế hoạch gulp để thực hiện các công cụ liên quan đến web, như biên dịch sass, giảm thiểu css, uglify javascript và vv. Nhưng tôi thực sự gặp rắc rối với sass.gulp-sass không biên soạn các tệp sass

Dưới đây là một mẫu mã của tôi:

gulp.task('compile-sass', function() { 
    gulp.src(buildType+config.path.sass+"/main.sass") 
     .pipe(compass({ 
      css: 'css', 
      sass: 'sass' 
     })) 
    .pipe(gulp.dest(buildType+config.path.css+"/test")); 
}); 

Vì vậy, tôi đang sử dụng la bàn ở đây vì tôi chỉ có tập tin * .sass và không .scss để nuốt chửng-sass sẽ không làm việc cho tôi. Vì vậy, tôi hỏi nếu có ai có thể cho tôi một chút lý do tại sao nhiệm vụ này không hoạt động. Đây là những gì giao diện điều khiển của tôi trả về:

[gulp] Starting 'compile-sass'... 
[gulp] Finished 'compile-sass' after 6.11 ms 
[gulp] You must compile individual stylesheets from the project directory. 


events.js:72 
    throw er; // Unhandled 'error' event 
     ^
[gulp] Error in plugin 'gulp-compass': Compass failed 
at Transform.<anonymous> (/Users/myusername/node_modules/gulp-compass/index.js:37:28) 
at ChildProcess.<anonymous> (/Users/myusername/node_modules/gulp-compass/lib/compass.js:136:7) 
at ChildProcess.EventEmitter.emit (events.js:98:17) 
at maybeClose (child_process.js:753:16) 
at Socket.<anonymous> (child_process.js:966:11) 
at Socket.EventEmitter.emit (events.js:95:17) 
at Pipe.close (net.js:465:12) 

Tôi biết tôi không sử dụng bất kỳ config.rb, nhưng hai điều: 1) Tôi không tìm thấy ví dụ về tập tin như vậy 2) nuốt chửng-la bàn doc cho ví dụ mà không như vậy một tệp để tôi cho rằng đó là tùy chọn

Cảm ơn bạn trước.

+0

Giá trị của 'buildType + config.path.sass' và' buildType + config.path.css' là gì? Có phải họ là đường dẫn tương đối từ gốc của dự án, nơi bạn chạy 'gulp'? Theo cấu hình, nó không phải là cấu hình 'gulp-compass', nhưng [' compass' confg chính nó] (http://compass-style.org/help/tutorials/configuration-reference/). Một điều nữa, Compass chỉ thêm libs vào SASS. Do đó, khả năng biên dịch '.sass' và' .scss' không phải từ Compass, mà là SASS, vì vậy 'gulp-sass' sẽ làm việc đó cho bạn. –

+0

Cảm ơn câu trả lời nhanh. 'buildType + config.path.sass' là một chuỗi hợp lệ đến từ tệp cấu hình Json, tôi đang sử dụng nó trong các tác vụ khác trong cùng một tệp gulpfile và nó hoạt động hoàn hảo. Khi tôi đang sử dụng 'gulp-sass' thay vì 'la bàn', một lỗi khác xuất hiện khi đọc tệp (chuỗi [gulp] [gulp-sass]: 4: lỗi: giá trị đọc lỗi sau $ gray' và các giá trị khác như thế này). Tôi giả định rằng các tập tin '.ass 'không được hỗ trợ bởi gulp-sass nhưng chỉ' .scss'. – soenguy

+1

gulp không quan tâm phần mở rộng của tệp là gì. Nó sử dụng trình phân tích cú pháp 'node-sass'. Hãy xem xét sử dụng 'gulp-ruby-sass' vì nó cần hỗ trợ cho các phần mở rộng .scss và .sass. Sau đó, nó có thể giảm các lỗi có thể để thu hẹp vấn đề của bạn. – SteveLacy

Trả lời

5

Nhờ SteveLacy tôi có thể xoay xở để khắc phục vấn đề này.

Nếu bạn chỉ có tệp .ass và không có .scs, bạn cần sử dụng gulp-ruby-sass thay vì gulp-la bàn hoặc gulp-sass. Đây là một mẫu mã làm việc của tôi:

var sass = require('gulp-ruby-sass'); 

gulp.task('compile-sass', function() { 
    gulp.src(path/to/your/sass/folder/main.sass") 
     .pipe(sass()) 
    .pipe(gulp.dest('path/to/your/css/folder)); 
}); 
2

Cách cơ bản nhất và đơn giản là:

var sass = require('gulp-ruby-sass'); 

gulp.task('styles', function() { 
    gulp.src('sass/*.scss') 
    .pipe(sass({ 
     noCache : true, 
     style : "compact" 
    })) 
    .pipe(gulp.dest('css')); 
}); 
+1

Bạn không có nghĩa là '' sass/*. Sass''? –

0

Tôi biết đây có thể không phải là địa điểm chính xác cho câu trả lời này, nhưng không có nhiều trên Google cho những người có lỗi gulp-ruby-sass.

Đối với bất kỳ ai nhận được lỗi "source không khớp với bất kỳ tệp nào." Hãy chắc chắn để đảm bảo (các) đường dẫn bạn đặt trong gulp.src() có ít nhất 1 sass (hoặc scss) trong đó.

Trong trường hợp của tôi, tôi có 3 đường dẫn cho nhiệm vụ và chỉ 1 trong các đường dẫn hoàn toàn trống. Bằng cách thêm một tập tin trống (_fake.scss) vào đường dẫn đó, lỗi đã được sửa.

Hy vọng điều này sẽ giúp ai đó!

Các vấn đề liên quan