Tôi đang sử dụng gulp-inject để tự động thêm SASS nhập khẩu khi chúng mới được tạo trong dự án của tôi. Đây hoạt động tốt, các tập tin Sass mới được nhập khẩu một cách chính xác, tuy nhiên khi một tập tin đã nhập khẩu sẽ bị xóa trong khi ngụm-đồng hồ đang chạy nó bị treo với các lỗi sau:gulp-inject không hoạt động với gulp-watch
Error: _dev\style\style.scss
Error: File to import not found or unreadable: components/_test - Copy.scss
Parent style sheet: stdin
on line 2 of stdin
>> @import "components/_test - Copy.scss";
Tôi đã dành một vài giờ tốt cố gắng làm việc lý do tại sao nó cố gắng biên dịch một phiên bản cũ hơn của bảng định kiểu với nhập khẩu lỗi thời. Tôi thiết lập một sự chậm trễ trên nhiệm vụ SASS và nhập khẩu là chính xác trong tập tin thực tế bởi thời gian chạy gulp-sass. Tôi đã đọc rằng gulp-watch có thể được bộ nhớ đệm stylehseet, nhưng thực sự không chắc chắn.
Dưới đây là các bit liên quan của tệp Gulp của tôi, ở dưới cùng là liên kết đến tệp gulp đầy đủ của tôi.
Dưới đây là nhiệm vụ đồng hồ của tôi: (Các thành phần nhiệm vụ kích hoạt nhiệm vụ Sass)
// SASS
plugins.watch([paths.dev+'/**/*.scss',!paths.dev+'/style/components/**/*.scss'], function() {gulp.start(gulpsync.sync([
'build-sass'
]));});
// COMPONENTS
plugins.watch(paths.dev+'/style/components/**/*.scss', function() {gulp.start(gulpsync.sync([
'inject-deps'
]));});
Sass nhiệm vụ
gulp.task('build-sass', function() {
// SASS
return gulp.src(paths.dev+'/style/style.scss')
.pipe(plugins.wait(1500))
.pipe(plugins.sass({ noCache: true }))
.pipe(gulp.dest(paths.tmp+'/style/'));
});
Tiêm nhiệm vụ
gulp.task('inject-deps', function() {
// Auto inject SASS
gulp.src(paths.dev+'/style/style.scss')
.pipe(plugins.inject(gulp.src('components/**/*.scss', {read: false, cwd:paths.dev+'/style/'}), {
relative: true,
starttag: '/* inject:imports */',
endtag: '/* endinject */',
transform: function (filepath) {
return '@import "' + filepath + '";';
}
}))
ĐẦY ĐỦ Gulp FILE: https://jsfiddle.net/cwu0m1cp/
Theo yêu cầu ở đây là tập tin với nhập khẩu các Sass, nó hoạt động tốt miễn là nhiệm vụ đồng hồ không chạy, các tập tin nhập khẩu không chứa CSS:
Sass FILE TRƯỚC DELETE:
/* inject:imports */
@import "components/_test.scss";
@import "components/_test-copy.scss";
/* endinject */
Sass FILE SAU DELETE:
/* inject:imports */
@import "components/_test.scss";
/* endinject */
Cả hai tệp 'inject-deps' và' build-sass' đều có cùng một tệp. Tại sao đây không phải là một luồng/nhiệm vụ?Và tại sao 'inject-deps' không có' gulp.dest() '? –
Và những gì xảy ra với tất cả các tác vụ đó: 'watch: message',' watch: reload', 'clean: pub',' build: pub'. Hoặc là chúng có liên quan đến câu hỏi của bạn thì bạn cần đưa chúng vào. Hoặc chúng không liên quan thì đừng bận tâm đến chúng. Đọc [this] (http://stackoverflow.com/help/mcve) –
Tôi đã nhận được một vòng lặp xem khi cả hai sass và tiêm trong cùng một nhiệm vụ, tôi đã phải tách chúng ra do điều này. Tôi đã sao chép toàn bộ tác vụ của mình, các bit bạn đã đề cập không liên quan, tôi có thể lấy chúng ra nếu nó rõ ràng hơn. – Alex