Concat并使用gulp与node.js文件冲突来缩小

时间:2017-01-13 08:37:15

标签: node.js gulp gulp-concat gulp-uglify

我编写了一个脚本来连接和缩小项目中的一些java脚本文件。当我使用Visual Studio 2015和Power-shell运行它时,它在最后给出了一条错误消息。请参阅随附的屏幕截图以获取脚本和错误消息。

根据错误信息,我的想法是; 该脚本也尝试连接/缩小node.js文件,因为该错误与node.js文件有关,但是由于我没有在“Layout.cshtml”中包含对Node.js的任何引用而无法发生这种情况。

有人请解释我所犯的错误。



/// <vs />
// include plug-ins
'use strict';
var gulp = require('gulp');
var concat = require('gulp-concat');
var htmlbuild = require('gulp-htmlbuild');
var plugins = require('gulp-load-plugins')();
var es = require('event-stream');
var clean = require('gulp-clean');
var uglify = require('gulp-uglify');
var ignore = require('gulp-ignore');

// pipe a glob stream into this and receive a gulp file stream 
var gulpSrc = function (opts) {
    var paths = es.through();
    var files = es.through();
    paths.pipe(es.writeArray(function (err, srcs) {
        var fixedFiles = [];
        for (var i = 0; i < srcs.length; i++) {
            fixedFiles[i] = srcs[i].replace("~", ".");
            console.log(fixedFiles[i]);
        }
        gulp.src(fixedFiles, opts).pipe(files);
    }));
    return es.duplex(paths, files);
};

var jsBuild = es.pipeline(
    plugins.concat('all.js'),
    gulp.dest('./Scripts/')
);

gulp.task('clean', function () {
    return gulp.src('./Scripts/all.js')
            .pipe(clean({ force: true }));
});

gulp.task('build', function () {
    return gulp.src(['./Views/Home/Layout.cshtml'])
    .pipe(htmlbuild({
        js: htmlbuild.preprocess.js(function (block) {
            block.pipe(gulpSrc())
           .pipe(jsBuild);
        })
    }));
    process.stdout.write('build is done');
});

gulp.task('minify', function () {
    return gulp.src(['./Scripts/all.js']).
    pipe(uglify()).
    pipe(gulp.dest('./testing'));
});
gulp.task('default', ['clean', 'build', 'minify'], function () { });
&#13;
&#13;
&#13;

Error message

1 个答案:

答案 0 :(得分:1)

minify任务中Uglify引发此错误。它告诉你,它正在运行的JavaScript代码无法正确解析。换句话说,文件Scripts/all.js中有SyntaxError

遗憾的是,Uglify为此提供了如此低质量的错误。我建议你把这个文件运到像ESLint这样的linter中。它会很好地向您展示文件中SyntaxError的确切位置。这是工具链中的一个重要步骤,应该尽早完成(在模块级别,而不是在构建的代码上)。