Skip to content

Commit

Permalink
Feature: bundle event on watch stream
Browse files Browse the repository at this point in the history
  • Loading branch information
zoubin committed Mar 6, 2016
1 parent 312d13e commit e88c550
Show file tree
Hide file tree
Showing 21 changed files with 98 additions and 98 deletions.
65 changes: 65 additions & 0 deletions example/gulp/multi/gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
'use strict'

const reduce = require('../../..')
const gulp = require('gulp')
const path = require('path')
const del = require('del')

gulp.task('clean', function () {
return del(path.join(__dirname, 'build'))
})

gulp.task('build', ['clean'], function () {
let basedir = path.join(__dirname, 'src')
let b = reduce.create({
basedir: basedir,
paths: [path.join(basedir, 'web_modules')],
})

// As multiple bundles are created,
// it is important to deal with duplicates carefully.
// There are known issues caused in such cases.
// See https://github.com/substack/factor-bundle/issues/51
// This plugin will just disable the default dedupe transform.
b.plugin('dedupify')
b.on('dedupify.deduped', function (o) {
console.warn('Duplicates of modules found!', o.file, o.dup)
})

return gulp.src('page/**/index.js', { cwd: basedir })
.pipe(reduce.bundle(b, {
// This object is passed to `common-bundle`.
groups: 'page/**/index.js',
common: 'common.js',
}))
.pipe(gulp.dest('build'))
})

gulp.task('watch', ['clean'], function () {
let clean = require('clean-remains')([])
let basedir = path.join(__dirname, 'src')
let b = reduce.create({
basedir: basedir,
paths: [path.join(basedir, 'web_modules')],
cache: {},
packageCache: {},
})
b.plugin('dedupify')
b.on('dedupify.deduped', function (o) {
console.warn('Duplicates of modules found!', o.file, o.dup)
})
return gulp.src('page/**/index.js', { cwd: basedir })
.pipe(reduce.watch(b, {
groups: 'page/**/index.js',
common: 'common.js',
}, { entryGlob: 'page/**/index.js' }))
.on('bundle', function (bundleStream) {
bundleStream
.pipe(gulp.dest('build'))
// This plugin will remove files created in the building history but no longer in the newest build.
.pipe(clean())
.on('data', file => console.log('bundle:', file.relative))
.on('end', () => console.log('-'.repeat(40)))
})
})

File renamed without changes.
File renamed without changes.
59 changes: 0 additions & 59 deletions example/gulp/multiple-bundles/gulpfile.js

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,37 +10,33 @@ gulp.task('clean', function () {
})

gulp.task('build', ['clean'], function () {
let b = createBundler()
return gulp.src('page/**/index.js', { cwd: b._options.basedir })
let basedir = path.join(__dirname, 'src')
let b = reduce.create({
basedir: basedir,
paths: [path.join(basedir, 'web_modules')],
})
return gulp.src('page/**/index.js', { cwd: basedir })
.pipe(reduce.bundle(b, 'bundle.js'))
.pipe(gulp.dest('build'))
})

gulp.task('watch', ['clean'], function (cb) {
let b = createBundler()
b.plugin(require('clean-remains')([]))
b.on('bundle-stream', function (bundleStream) {
bundleStream.pipe(gulp.dest('build'))
})
gulp.src('page/**/index.js', { cwd: b._options.basedir })
.pipe(reduce.watch(b, 'bundle.js', { entryGlob: 'page/**/index.js' }))
})

function createBundler() {
gulp.task('watch', ['clean'], function () {
let clean = require('clean-remains')([])
let basedir = path.join(__dirname, 'src')
let b = reduce.create({
basedir: basedir,
paths: [path.join(basedir, 'web_modules')],
fileCache: {},
cache: {},
packageCache: {},
})

b.on('error', console.log.bind(console))
b.on('common.map', function (map) {
console.log('bundles:', '[ ' + Object.keys(map).join(', ') + ' ]')
})

return b
}
return gulp.src('page/**/index.js', { cwd: b._options.basedir })
.pipe(reduce.watch(b, 'bundle.js', { entryGlob: 'page/**/index.js' }))
.on('bundle', function (bundleStream) {
bundleStream
.pipe(gulp.dest('build'))
.pipe(clean())
.on('data', file => console.log('bundle:', file.relative))
.on('end', () => console.log('-'.repeat(40)))
})
})

File renamed without changes.
File renamed without changes.
3 changes: 0 additions & 3 deletions example/gulp/single-bundle/src/page/hi/index.js

This file was deleted.

1 change: 1 addition & 0 deletions example/node_modules/reduce-js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions example/without-gulp/build.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
'use strict'

const reduce = require('../..')
const reduce = require('reduce-js')
const del = require('del')

const basedir = __dirname + '/src'
const build = __dirname + '/build'
del(build).then(function () {
let b = reduce.create({ basedir: basedir })

b.on('error', err => console.log(err))
b.on('common.map', map => console.log(map))

reduce.src('*.js', { cwd: basedir })
.pipe(reduce.bundle(b, 'bundle.js'))
.pipe(reduce.dest(build))
.on('data', file => console.log('bundle:', file.relative))
.on('end', () => console.log('DONE'))
})

2 changes: 1 addition & 1 deletion example/without-gulp/default-watch.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const reduce = require('../..')
const reduce = require('reduce-js')
const del = require('del')

const basedir = __dirname + '/src'
Expand Down
2 changes: 1 addition & 1 deletion example/without-gulp/default.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const reduce = require('../..')
const reduce = require('reduce-js')
const del = require('del')

const basedir = __dirname + '/src'
Expand Down
2 changes: 1 addition & 1 deletion example/without-gulp/stream-input.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict'

const reduce = require('../..')
const reduce = require('reduce-js')
const del = require('del')
const fs = require('fs')
const source = require('vinyl-source-stream')
Expand Down
15 changes: 7 additions & 8 deletions example/without-gulp/watch.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
'use strict'

const reduce = require('../..')
const path = require('path')
const reduce = require('reduce-js')
const del = require('del')

const basedir = __dirname + '/src'
Expand All @@ -13,14 +12,14 @@ del(build).then(function () {
packageCache: {},
fileCache: {},
})
b.on('error', err => console.log(err.stack))

b.on('error', err => console.log(err))
b.on('common.map', map => console.log(map))

b.on('bundle-stream', function (bundleStream) {
bundleStream.pipe(reduce.dest(build))
})
reduce.src('*.js', { cwd: basedir })
.pipe(reduce.watch(b, 'bundle.js', { entryGlob: '*.js' }))
.on('bundle', function (bundleStream) {
bundleStream.pipe(reduce.dest(build))
.on('data', file => console.log('bundle:', file.relative))
.on('end', () => console.log('-'.repeat(40)))
})
})

1 change: 1 addition & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ function watch(b, opts, wopts) {
next()
},
function (next) {
b.on('bundle-stream', s => this.emit('bundle', s))
b.once('close', next)
b.start()
}
Expand Down

0 comments on commit e88c550

Please sign in to comment.