This repository was archived by the owner on Sep 19, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +67
-1
lines changed Expand file tree Collapse file tree 3 files changed +67
-1
lines changed Original file line number Diff line number Diff line change @@ -245,6 +245,29 @@ gulp.task('js-compile', function () {
245
245
});
246
246
```
247
247
248
+ ### Requiring gulp.src files for compilation
249
+ By default, the gulp plugin will run the compiler even if no input is streamed in via ` gulp.src ` .
250
+ To disable this behavior, users can specify a { requireStreamInput: true } argument to skip
251
+ compilation if no files are streamed in. This allows interoperation with gulp plugins that signal
252
+ through empty streams.
253
+
254
+ ``` js
255
+ var closureCompiler = require (' google-closure-compiler' ).gulp ({
256
+ requireStreamInput: true
257
+ });
258
+ var newer = require (' gulp-newer' );
259
+
260
+ gulp .task (' js-compile' , function () {
261
+ return gulp .src (' ./src/js/**/*.js' , {base: ' ./' })
262
+ .pipe (newer (' ./dist/output.min.js' ))
263
+ .pipe (closureCompiler ({
264
+ compilation_level: ' ADVANCED' ,
265
+ js_output_file: ' output.min.js'
266
+ }))
267
+ .pipe (gulp .dest (' ./dist' ));
268
+ });
269
+ ```
270
+
248
271
### Gulp Sourcemaps
249
272
The gulp plugin supports gulp sourcemaps.
250
273
Original file line number Diff line number Diff line change 30
30
31
31
32
32
/**
33
+ * @param {Object<string,string> } initOptions
33
34
* @return {function(Object<string,string>|Array<string>):Object }
34
35
*/
35
- module . exports = function ( ) {
36
+ module . exports = function ( initOptions ) {
36
37
var filesToJson = require ( './concat-to-json' ) ;
37
38
var jsonToVinyl = require ( './json-to-vinyl' ) ;
38
39
var Compiler = require ( '../node/closure-compiler' ) ;
@@ -41,6 +42,7 @@ module.exports = function() {
41
42
var through = require ( 'through2' ) ;
42
43
/** @const */
43
44
var PLUGIN_NAME = 'gulp-google-closure-compiler' ;
45
+ var streamInputRequired = initOptions ? ! ! initOptions . requireStreamInput : false ;
44
46
45
47
return function ( compilationOptions , pluginOptions ) {
46
48
pluginOptions = pluginOptions || { } ;
@@ -76,6 +78,13 @@ module.exports = function() {
76
78
// Input files are present. Convert them to a JSON encoded string
77
79
stdInData = filesToJson ( fileList ) ;
78
80
} else {
81
+ // If files in the stream were required, no compilation needed here.
82
+ if ( streamInputRequired ) {
83
+ this . emit ( 'end' ) ;
84
+ cb ( ) ;
85
+ return ;
86
+ }
87
+
79
88
// The compiler will always expect something on standard-in. So pass it an empty
80
89
// list if no files were piped into this plugin.
81
90
stdInData = "[]" ;
Original file line number Diff line number Diff line change @@ -260,6 +260,40 @@ describe('gulp-google-closure-compiler', function() {
260
260
261
261
stream . end ( ) ;
262
262
} ) ;
263
+
264
+ it ( 'should compile gulp.src files when stream input is required' , function ( done ) {
265
+ this . timeout ( 30000 ) ;
266
+ this . slow ( 10000 ) ;
267
+
268
+ var streamRequiredCompiler = compilerPackage . gulp ( {
269
+ requireStreamInput : true
270
+ } ) ;
271
+
272
+ gulp . src ( __dirname + '/fixtures/**.js' )
273
+ . pipe ( streamRequiredCompiler ( {
274
+ compilation_level : 'SIMPLE' ,
275
+ warning_level : 'VERBOSE'
276
+ } ) )
277
+ . pipe ( assert . length ( 1 ) )
278
+ . pipe ( assert . first ( function ( f ) {
279
+ f . contents . toString ( ) . should . eql ( 'function log(a){console.log(a)}log("one.js");log("two.js");\n' ) ;
280
+ } ) )
281
+ . pipe ( assert . end ( done ) ) ;
282
+ } ) ;
283
+
284
+ it ( 'should generate no output without gulp.src files when stream input is required' , function ( done ) {
285
+ var streamRequiredCompiler = compilerPackage . gulp ( {
286
+ requireStreamInput : true
287
+ } ) ;
288
+
289
+ gulp . src ( [ ] )
290
+ . pipe ( streamRequiredCompiler ( {
291
+ compilation_level : 'SIMPLE' ,
292
+ warning_level : 'VERBOSE'
293
+ } ) )
294
+ . pipe ( assert . length ( 0 ) )
295
+ . pipe ( assert . end ( done ) ) ;
296
+ } ) ;
263
297
} ) ;
264
298
265
299
describe ( 'in streaming mode' , function ( ) {
You can’t perform that action at this time.
0 commit comments