Slide 1

Slide 1 text

Gulp-internal [email protected]

Slide 2

Slide 2 text

Gulp • A build system based on stream

Slide 3

Slide 3 text

sample • gulpfile.js: var gulp = require(‘gulp’) gulp.src(‘lib/**/*.js’) .pipe(concat()) .pipe(rename(‘concat.js’)) .pipe(gulp.dest(‘build’)) • run: gulp

Slide 4

Slide 4 text

feature • No temporary file • virtual memory file content transfer • Full stream support • stream. Readable • stream. Writable • stream. Transform • through2

Slide 5

Slide 5 text

gulp • global cli • local lib • plugins/streams

Slide 6

Slide 6 text

cli • Depends • liftoff Change cwd require gulpfile require gulp .start

Slide 7

Slide 7 text

through2 • Easy to create stream.Transform and compatible with 0.8- • through2(option, function transform(chunk,encoding,callback){},function flush(){}) • === • var stream = new MyTransform(option); // extends stream.Transform stream._transform = transform; stream._flush = flush; return stream;

Slide 8

Slide 8 text

Local lib • Api • Gulp.src • Gulp.dest • Gulp.task • * Gulp.watch • Depends • vinyl • vinyl-fs • orchestrator

Slide 9

Slide 9 text

vinyl • Virtual file representation • { content: buffer/stream path: }

Slide 10

Slide 10 text

Gulp.src • === require(‘vinyl-fs’).src • return stream.Transform({object:true}) • Emit Stream of vinyl file

Slide 11

Slide 11 text

Gulp.dest • === require(‘vinyl-fs’).dest • return stream.Transform({object:true}) • Save file and Emit Stream of saved vinyl file

Slide 12

Slide 12 text

Orchestrator • A module for sequencing and executing tasks and dependencies in maximum concurrency • Gulp.task(name, deps, function(){}) • KISSY.add(name,deps,function(){}) • ‘default’

Slide 13

Slide 13 text

Task end condition • Promise resolved • Callback called • Stream end • Task(‘x’,function(callback){ • Return promise or stream • Or • Callback() • });

Slide 14

Slide 14 text

plugins • Return stream.Transform • Operate on vinyl file • Example • Gulp-concat • Gulp-uglify • Gulp-modulex

Slide 15

Slide 15 text

• gulp.src(‘./gulp-internal’).pipe(audience()).pipe(thanks())