Gulp-sass срабатывает, но не записывает вывод при сохранении партиалов - PullRequest
0 голосов
/ 10 января 2019

Я работаю с gulp sass для компиляции, префикса и минимизации своих scss в css и min.css, я использую watch для запуска компиляции каждый раз, когда я сохраняю файлы, но внезапно gulp-sass прекратил записывать выходные файлы ТОЛЬКО при сохранении партиалов, всего отлично работает, когда я сохраняю основной style.scss

Это журнал SASS в моем терминале в обоих случаях, позволяющий сохранить основной файл или частичные файлы scss. Как вы можете видеть, он срабатывает оба раза, но только при сохранении основных файлов генерируется и сохраняется результат.

[11:54:50] Starting 'sass'...
[11:54:51] Finished 'sass' after 886 ms
[11:54:52] Starting 'sass'...
[11:54:53] Finished 'sass' after 809 ms

Gulp установлен глобально, и приведенный ниже файл Gulpfile.js всегда работал до вчерашнего дня. Я несколько раз пытался изменить путь к gulp.src, но безуспешно. Очевидно, я все еще могу скомпилировать все, сохраняя основной файл style.scss, но это действительно раздражает, когда вы работаете с несколькими файлами одновременно.

Другая странная вещь заключается в том, что попытка изменить путь к файлам для компиляции минимизированной версии вернулась к более старой версии даты; Я думал, что это может быть проблема с кэш-памятью NPM, но я не очень уверен в узле / npm, я использую его только для компиляции SCSS и объединения JS, и все.

Заранее большое спасибо всем, кто может мне помочь.

var themeurl = './';
var gulp = require('gulp');
var sass = require('gulp-sass');
var autoprefixer = require('gulp-autoprefixer');
var rename = require("gulp-rename");
var watch = require('gulp-watch');
var concat = require('gulp-concat'); 
var uglify = require('gulp-uglify'); 
var cleanCSS = require('gulp-clean-css');
var sourcemaps = require('gulp-sourcemaps');


gulp.task('sass', function () {
  return gulp.src(themeurl + '_sass/style.scss')
    .pipe(sourcemaps.init())
    .pipe(sass().on('error', sass.logError))
    .pipe(autoprefixer({
        browsers: ['last 10 versions']
    }))
    .pipe(sourcemaps.write())   
    .pipe(gulp.dest(themeurl))
    .pipe(cleanCSS({compatibility: 'ie8'}))
    .pipe(rename('style.min.css'))
    .pipe(gulp.dest(themeurl));

});


gulp.task('scripts', function() {
    gulp.src('_js/*.js')
    .pipe(concat('scripts.js'))
    .pipe(gulp.dest('assets/js'));
    return gulp.src(themeurl + 'assets/js/scripts.js')
        .pipe(uglify().on('error', function(e){
            console.log(e);
         }))
        .pipe(rename('scripts.min.js'))
        .pipe(gulp.dest(themeurl+'assets/js/'));    
});


gulp.task('watch', function () {
    gulp.watch(themeurl + '_sass/**/*.scss', gulp.series('sass') );
    gulp.watch(themeurl + '_js/*.js', gulp.series('scripts') );  
});

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Спасибо, Ремко, я уже пробовал, но, к сожалению, ничего не изменилось. Как я описал в обновлении, проблема, похоже, связана с датой / временем файла, а не с компиляцией: компиляция обновляется со всеми моими изменениями, но дата / время не.

0 голосов
/ 25 февраля 2019

Вы решили свою проблему? У меня такая же проблема.

Мой обходной путь связан с тем, как я пишу задачу наблюдения. И я должен удалять css bundle перед каждой новой компиляцией

// old 
watch(`${paths.src}/sass/**/*.scss`, series(css, reload));
// workaround
watch(`${paths.src}/sass/*.scss`, series(delCSSbundle, css, reload));

В результате содержимое пакета CSS обновляется при каждой компиляции, но дата / время пакета остается неизменным.

0 голосов
/ 10 января 2019

Работает ли это при замене style на *, как показано в блоке кода ниже? * указывает gulp искать в папке все файлы, заканчивающиеся на .scss.

gulp.task('sass', function () {
  return gulp.src(themeurl + '_sass/*.scss')
    .pipe(sourcemaps.init())
    .pipe(sass().on('error', sass.logError))
    .pipe(autoprefixer({
        browsers: ['last 10 versions']
    }))
    .pipe(sourcemaps.write())   
    .pipe(gulp.dest(themeurl))
    .pipe(cleanCSS({compatibility: 'ie8'}))
    .pipe(rename('style.min.css'))
    .pipe(gulp.dest(themeurl));

});
...