用gulp压缩文件报错,请问什么原因?

clipboard.png
请问这是因为js语法有错误还是什么原因呢?

以下是gulp配置

var gulp = require("gulp");
var ejs = require("gulp-ejs");
var plumber = require("gulp-plumber");
var rename = require("gulp-rename");
var watch = require("gulp-watch");
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var del = require("del");
var sass = require("gulp-sass");
var connect = require('gulp-connect');
var livereload = require('gulp-livereload');
var htmlmin = require("gulp-htmlmin");//Html压缩
var ts=require('gulp-typescript');

//Htmls
gulp.task('htmls', function () {
    var options = {
        removeComments: true,//清除HTML注释
        collapseWhitespace: true,//压缩HTML
        collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input />
        removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />
        removeScriptTypeAttributes: false,//删除<script>的type="text/javascript"
        removeStyleLinkTypeAttributes: false,//删除<style>和<link>的type="text/css"
        minifyJS: true,//压缩页面JS
        minifyCSS: true//压缩页面CSS
    };
    gulp.src(["./src/views/**/*.html"])
        .pipe(htmlmin(options))
        .pipe(gulp.dest("./src/build/views"));
});

gulp.task('ejs', () => {
    return gulp.src(["./src/views_ejs/**/*.ejs", "!./src/views_ejs/public/*.ejs"])
        .pipe(plumber())
        .pipe(ejs({ text: 1 }, { ext: '.html' }))
        .pipe(gulp.dest("./src/views/"))
});
gulp.task('css', () => {
    return gulp.src('./src/css/**/*.css')      //压缩的文
        .pipe(minifycss()) //输出文件夹
        .pipe(gulp.dest('./src/build/css'))

});
gulp.task('js', () => {
    return gulp.src('./src/js/**/*.js')      //压缩的文
        .pipe(ts({
            target:"es5",
            allowJs:true,
            moudle:"commonjs",
            moduleResolution:"node"
        }))
        .pipe(uglify()) //输出文件夹
        .pipe(gulp.dest('./src/build/js'))

});

gulp.task('sass', () => {
    return gulp.src('./src/sass/**/*.scss')
        .pipe(sass().on('error', sass.logError))
        .pipe(gulp.dest('./src/css'));

});

gulp.task('clean', function (cb) {
    del(['./src/build/js/**/*.js', './src/build/css/**/*.css','./src/views/**/*.ejs', "./src/build/views/**/*.html"], cb)
});

gulp.task('webserver', function() {
    connect.server({livereload: true});
});

gulp.task('images', function () {
   return gulp.src(['./src/images/*/**.*'])
            .pipe(gulp.dest('./src/build/images'))
});

gulp.task('watch', () => {
//    var server = livereload();
    watch('./src/views_ejs/',() =>{
        gulp.start('ejs')
    });
    
    watch('./src/sass/',() =>{
        gulp.start('sass')
    });
//    gulp.watch('./src/**/*.*', function (file) {
//        server.changed(file.path);
//    });
    
});
gulp.task('build', ['clean', 'sass','css', 'js', 'htmls','images']);

gulp.task('default', ['watch','webserver'])

clipboard.png

clipboard.png

clipboard.png

阅读 4.5k
3 个回答

泻药,同意 @Dont 的说法,这个截图中信息实在是没有什么用。。。最好能够提供npm的debug.log以及gulp的配置代码。
一般来说,这样的问题是语法问题造成的。一般可以在下面的报错信息中得到提示。

补充:
好吧。。gulp配置。。简单到不可能出问题。。能够看一下刚才报错的全部信息么。
如果报错信息里面全部是node_modules里面的文件报错,那么只能用eslint等工具检查一下你的js语法了。。

或是有没有用到ES6的语法?

不排除是node_modules包的问题,之前遇到过类似的,更新包就可以了

有可能是ts转成es5后遇到了uglify无法解析的错误,有个笨方法是缩小原文件数量和范围,然后执行,直至定位到导致出错的代码行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题