使用 gulp 与 node.js 文件冲突的连接和缩小

Concat and minify using gulp conflict with node.js file

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

根据报错信息我的想法是; 该脚本也尝试 concat/minify node.js 文件,因为该错误与 node.js 文件有关,但这不可能发生,因为我没有包含对 [=31= 的任何引用] 在“Layout.cshtml”中。

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

/// <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 () { });

此错误是由文件 Scripts/all.js 中的 Uglify within your minify task. It is telling you that the JavaScript code it is operating on could not be parsed correctly. In other words, there is a SyntaxError 引发的。

不幸的是,Uglify 为此给出了这样的 low-quality 错误。我建议您通过 ESLint 这样的 linter 获取该文件并 运行 它。它将很好地向您显示 SyntaxError 在文件中的确切位置。这是工具链中的重要一步,应尽早完成(在模块级别,而不是构建代码)。