Gulp sass在保存部分时激发,但不写入输出

Gulp sass在保存部分时激发,但不写入输出,sass,gulp,Sass,Gulp,我使用gulp sass将我的SCS编译、添加前缀并缩小为css和min.css,每次保存文件时我都使用watch启动编译,但突然gulp sass仅在保存部分时才停止编写输出文件,保存主样式时一切正常。scss 这是两种情况下我的终端中的SASS日志,无论是保存主文件还是部分scss文件。正如您所看到的,它两次都触发,但仅在保存输出的主文件上生成并保存输出 [11:54:50] Starting 'sass'... [11:54:51] Finished 'sass' after 886 ms

我使用gulp sass将我的SCS编译、添加前缀并缩小为css和min.css,每次保存文件时我都使用watch启动编译,但突然gulp sass仅在保存部分时才停止编写输出文件,保存主样式时一切正常。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路径,但都没有成功。 显然,除了main style.scs之外,我仍然可以编译所有内容,但是当您同时处理多个文件时,这真的很烦人

另一件奇怪的事情是,试图更改文件路径以编译缩小的版本时,wa会恢复到较旧的日期版本;我认为这可能是NPM缓存的问题,但我对node/NPM不是很有信心,我只是用它来编译SCS和连接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') );  
});

如下面的代码块所示,将
样式
替换为
*
时,它是否有效?
*
告诉gulp搜索文件夹中以.scss结尾的所有文件

gulp.task('sass',function(){
返回gulp.src(themeurl+“_sass/*.scss”)
.pipe(sourcemaps.init())
.pipe(sass().on('error',sass.logError))
.管道(自动刷新器)({
浏览器:[“最近10个版本”]
}))
.pipe(sourcemaps.write())
.管道(大口目的地(欧洲))
.pipe(cleanCSS({compatibility:'ie8'}))
.pipe(重命名('style.min.css'))
.管道(大口目的地(themeurl));

});谢谢你,雷姆科,我已经试过了,但不幸的是没有任何改变。
正如我在更新中所描述的,问题似乎与文件的日期/时间有关,而与编译无关:编译是通过我的所有修改进行更新的,但日期/时间不是。

您解决问题了吗?我也有同样的问题

我的解决方法与我如何编写监视任务有关。我必须在每次编译之前删除css包

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

结果是每次编译都会更新CSS包的内容,但包的日期/时间保持不变

你的设置在停止工作之前有什么变化吗?您是否升级了任何软件包的版本?您确定正在将部分导入主文件吗?更新:事实上,文件似乎已更新,但其元数据日期/时间未更新。因此,在本地环境中开发时这不是问题,因为我可以看到前端在编写SCS时正常工作,这很烦人,因为我的IDE没有检测到要发布的文件,因为它们的过期日期@奇怪的是我什么都没变。真奇怪。我尝试卸载node并从头开始安装它(显然需要所有的gulp模块),但行为保持不变。我想我可以考虑解决我的问题,即使事实上是“不”,不,我真的没有。如果我想让我编译的CSS更新日期/时间,我必须保存主SCSS文件。因此,我的解决方法实际上是在每次需要在登台/制作网站上发布内容时保存main style.scs。