Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Gulp4中同时观看sass和javascript_Javascript_Gulp - Fatal编程技术网

如何在Gulp4中同时观看sass和javascript

如何在Gulp4中同时观看sass和javascript,javascript,gulp,Javascript,Gulp,我正在尝试将我的sass转换为压缩css,将javascript转换为uglifiedjs。和观察scss和js的变化 我的代码正在工作,但当我试图保存一个js文件时,它进入了一个不可阻挡的循环 这是我的密码: var gulp = require('gulp'); var sass = require('gulp-sass'); var uglify = require('gulp-uglify'); var concat = require('gulp-concat'); gulp

我正在尝试将我的sass转换为压缩css,将javascript转换为uglifiedjs。和
观察
scss和js的变化

我的代码正在工作,但当我试图保存一个js文件时,它进入了一个不可阻挡的循环

这是我的密码:

var gulp = require('gulp');
var sass = require('gulp-sass');    
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');

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

    gulp.src('public/sass/**/*.scss')
      .pipe(sass({outputStyle: 'compressed'})) // Using gulp-sass
      .pipe(gulp.dest('public/stylesheets'))

      done();
  });

gulp.task('scripts', function(done){

    gulp.src('public/javascripts/**/*.js')
        .pipe(concat('scripts.js'))
        .pipe(uglify())
        .pipe(gulp.dest('public/javascripts'))

        done();
});


  gulp.task('watch', function(){
        //I made .scss and .js into an array so they will both be watched
    gulp.watch(['public/sass/**/*.scss', 'public/javascripts/**/*.js' ], gulp.series('sass', 'scripts', function(done) {


        done();
      }))
  })
现在,当我运行
gulpwatch
时,它正在工作,但当我保存一个js文件时,我进入了一个保存循环,它不断地保存

我已使SCS使用此代码工作

 gulp.task('watch', function(){
    gulp.watch('public/sass/**/*.scss', gulp.series('sass', 'scripts', function(done) {


        done();
      }))
  })
但我不知道如何才能使.js文件被监视

我在谷歌上搜索可能的答案,但只找到了旧版本的解决方案。有没有办法让我用gulp4做这个

  • 我也试着吞下parallel,但它仍然循环

请帮忙。谢谢

我这样做解决了这个问题:

 gulp.task('watch', function(){
          //I added the src folder instead of the glob **(two asterisk)
          gulp.watch(['public/sass/**/*.scss', 'public/javascripts/src/*.js'], gulp.series('sass', 'scripts', function(done) {


    done();
  }))
})

我不知道为什么会发生这种情况,但它现在正在工作

您的原始代码:

gulp.task('watch', function(){
        //I made .scss and .js into an array so they will both be watched
    gulp.watch(['public/sass/**/*.scss', 'public/javascripts/**/*.js' ], gulp.series('sass', 'scripts', function(done) {

    done();
    }))
})
应该是

gulp.task('watch', function(done){

    // added done above too

    gulp.watch('public/sass/**/*.scss', gulp.series('sass') )
    gulp.watch('public/javascripts/**/*.js', gulp.series('scripts') )
    done();
})

当修改scss或js文件时,您的代码会同时触发“sass”和
“脚本”
任务,这是一种浪费(例如,
'sass'
任务将在js文件被更改时启动,但实际上不会对该js文件执行任何操作,但将不必要地运行sass重新编译,尽管没有更改scss文件)。

谢谢你,我是gulp新手,我看到的所有教程都非常难以理解。