使用 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
在文件中的确切位置。这是工具链中的重要一步,应尽早完成(在模块级别,而不是构建代码)。
我写了一个脚本来连接和缩小我项目中的一些 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
在文件中的确切位置。这是工具链中的重要一步,应尽早完成(在模块级别,而不是构建代码)。