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

gulp.task('sass', done => {
    gulp.src('./css/**/*.sass')
        .pipe(sourcemaps.init())
        .pipe(sass({outputStyle: 'expanded'}).on('error', sass.logError))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('.'));

    done()
});

gulp.task('sass:watch', done => {
    gulp.watch('./css/**/*.sass', gulp.series('sass'));

    done()
});

gulp.task('compressed-js', done => {
    gulp.src('js/src/*.js')
        .pipe(uglify())
        .pipe(rename({suffix: '.min'}))
        .pipe(gulp.dest('js'));

    done()
});

gulp.task('compressed-js:watch', done => {
    gulp.watch('./js/src/*.js', gulp.series('compressed-js'));

    done()
});


phpstorm中出现此错误:"ReferenceError: sourcemaps is not defined"

最佳答案

error非常不言自明:您指的是sourcemaps变量,但该变量不存在。

通常,您需要在gulpfile的顶部声明它,如下所示:

var sourcemaps = require('gulp-sourcemaps');


但是,Gulp 4具有sourcemap functionality built-in,因此您可以像这样重写sass任务:

gulp.task('sass', () =>
  gulp.src('./css/**/*.sass', { sourcemaps: true })
    .pipe(sass({ outputStyle: 'expanded' }).on('error', sass.logError))
    .pipe(gulp.dest('.', { sourcemaps: '.' }))
);


请注意,我删除了done回调,如果仅返回流,则不需要此回调。

请注意,运行compressed-js任务时会遇到相同的问题。您需要定义uglifyrename

var uglify = require('gulp-uglify');
var rename = require('gulp-rename');


并确保已安装所需的软件包。

10-07 14:24