使 Closure Compiler 与 Grunt 或 Gulp 一起工作
Making Closure Compiler work with Either Grunt or Gulp
我正在尝试在我计划用 ES6 编写的新项目中使用 Google Closure Compiler。我只是试着跟随 https://www.npmjs.com/package/google-closure-compiler。
在我执行 npm install google-closure-compiler 之后,我尝试了 G运行t 或 Gulp 方法,但都不适合我。我只有一个真正简单的 js hello world 类型的文件来测试工作流程。
对于 G运行t 我的 Gruntfile.js:
module.exports = function(grunt) {
require('google-closure-compiler').grunt(grunt);
grunt.initConfig({
'closure-compiler': {
my_target: {
files: {
'dest/output.min.js': ['src/js/**/*.js']
},
options: {
compilation_level: 'SIMPLE',
language_in: 'ECMASCRIPT6_STRICT',
language_out: 'ECMASCRIPT5_STRICT',
create_source_map: 'dest/output.min.js.map',
output_wrapper: '(function(){\n%output%\n}).call(this)\n//# sourceMappingURL=output.min.js.map'
}
}
}
});
当我 运行 "grunt" 我得到:
警告:未定义 Promise 使用 --force 继续。
由于警告而中止。
对于Gulp,我也是按照教程来的,我的gulpfile.js是这样的:
var gulp = require('gulp'),
gutil = require('gulp-util');
var Promise = require('es6-promise').Promise;
var closureCompiler = require('google-closure-compiler').gulp();
gulp.task('default', function () {
return gulp.src('./src/js/**/*.js', {base: './'})
.pipe(closureCompiler({
compilation_level: 'SIMPLE',
warning_level: 'VERBOSE',
language_in: 'ECMASCRIPT6_STRICT',
language_out: 'ECMASCRIPT5_STRICT',
output_wrapper: '(function(){\n%output%\n}).call(this)',
js_output_file: 'output.min.js'
})).on('error', gutil.log)
.pipe(gulp.dest('./dist/js'));
});
当我 运行 gulp 最初按照教程进行操作时,我 运行 也进入了 Promise not defined 错误,但至少我能够将 es6-promise 行添加到解决了最初的问题,但我仍然得到:
events.js:72
throw er; // Unhandled 'error' event
^
Error: not implemented
at Readable._read (_stream_readable.js:465:22)
at Readable.read (_stream_readable.js:341:10)
at Readable.on (_stream_readable.js:720:14)
at Readable.pipe (_stream_readable.js:575:10)
at Transform.CompilationStream._flush (/<my project directory>/node_modules/google-closure-compiler/lib/gulp/index.js:213:17)
at Transform.<anonymous> (_stream_transform.js:130:12)
at Transform.g (events.js:180:16)
at Transform.emit (events.js:117:20)
at finishMaybe (_stream_writable.js:360:12)
at endWritable (_stream_writable.js:367:3)
对使 G运行t 或 Gulp 工作有帮助吗?
升级您的 NodeJS 版本。这些插件假定支持原生 Promises。它可以追溯到 NodeJS 0.12。
我正在尝试在我计划用 ES6 编写的新项目中使用 Google Closure Compiler。我只是试着跟随 https://www.npmjs.com/package/google-closure-compiler。 在我执行 npm install google-closure-compiler 之后,我尝试了 G运行t 或 Gulp 方法,但都不适合我。我只有一个真正简单的 js hello world 类型的文件来测试工作流程。
对于 G运行t 我的 Gruntfile.js:
module.exports = function(grunt) {
require('google-closure-compiler').grunt(grunt);
grunt.initConfig({
'closure-compiler': {
my_target: {
files: {
'dest/output.min.js': ['src/js/**/*.js']
},
options: {
compilation_level: 'SIMPLE',
language_in: 'ECMASCRIPT6_STRICT',
language_out: 'ECMASCRIPT5_STRICT',
create_source_map: 'dest/output.min.js.map',
output_wrapper: '(function(){\n%output%\n}).call(this)\n//# sourceMappingURL=output.min.js.map'
}
}
}
});
当我 运行 "grunt" 我得到:
警告:未定义 Promise 使用 --force 继续。 由于警告而中止。
对于Gulp,我也是按照教程来的,我的gulpfile.js是这样的:
var gulp = require('gulp'),
gutil = require('gulp-util');
var Promise = require('es6-promise').Promise;
var closureCompiler = require('google-closure-compiler').gulp();
gulp.task('default', function () {
return gulp.src('./src/js/**/*.js', {base: './'})
.pipe(closureCompiler({
compilation_level: 'SIMPLE',
warning_level: 'VERBOSE',
language_in: 'ECMASCRIPT6_STRICT',
language_out: 'ECMASCRIPT5_STRICT',
output_wrapper: '(function(){\n%output%\n}).call(this)',
js_output_file: 'output.min.js'
})).on('error', gutil.log)
.pipe(gulp.dest('./dist/js'));
});
当我 运行 gulp 最初按照教程进行操作时,我 运行 也进入了 Promise not defined 错误,但至少我能够将 es6-promise 行添加到解决了最初的问题,但我仍然得到:
events.js:72
throw er; // Unhandled 'error' event
^
Error: not implemented
at Readable._read (_stream_readable.js:465:22)
at Readable.read (_stream_readable.js:341:10)
at Readable.on (_stream_readable.js:720:14)
at Readable.pipe (_stream_readable.js:575:10)
at Transform.CompilationStream._flush (/<my project directory>/node_modules/google-closure-compiler/lib/gulp/index.js:213:17)
at Transform.<anonymous> (_stream_transform.js:130:12)
at Transform.g (events.js:180:16)
at Transform.emit (events.js:117:20)
at finishMaybe (_stream_writable.js:360:12)
at endWritable (_stream_writable.js:367:3)
对使 G运行t 或 Gulp 工作有帮助吗?
升级您的 NodeJS 版本。这些插件假定支持原生 Promises。它可以追溯到 NodeJS 0.12。