This is a clone for watchify to support detecting new entries.
It is based on this pr, and once watchify handles watching adding/removing entry files, this package will be deprecated.
cd example/files
../../bin/cmd.js main.js -o bundle.js --entry-glob='main*.js'# new entry
cp main.js main2.js
# edit `main2.js` and save to see the change# delete entry
rm main2.js
varfs=require('fs')varbrowserify=require('browserify')varb=browserify({basedir: __dirname+'/files',cache: {},packageCache: {},entries: './main.js',})b.plugin(__dirname+'/../',{entryGlob: 'main*.js'})b.on('update',bundle)bundle()functionbundle(){console.log('UPDATE')b.bundle().pipe(fs.createWriteStream('bundle.js'))}varvfs=require('vinyl-fs')vardel=require('del')varbrowserify=require('browserify')varthrough=require('through2')varb=browserify({basedir: __dirname+'/files',cache: {},packageCache: {},entries: './main.js',})b.plugin(__dirname+'/../',{entryGlob: 'main*.js'})b.plugin(dedupify)b.plugin('common-bundle',{groups: '**/main*.js'})b.on('update',bundle)bundle()functionbundle(){console.log('UPDATE')varbuild=__dirname+'/build'del(build)b.bundle().pipe(vfs.dest(build))}functiondedupify(b){varundefb.on('reset',hook)hook()functionhook(){b.pipeline.get('dedupe').unshift(through.obj(function(row,enc,next){if(row.entry&&row.dedupe){row.dedupe=undefrow.dedupeIndex=undef}next(null,row)}))}}When running the script above, you can do something like:
cd example/files
# add new entries and new bundles are created
cp main.js main2.js
# edit main2.js# delete entries and bundles are removed
rm main2.js
The dedupify plugin in the example above is used to fix a known problem with browserify (see substack/factor-bundle#51),
which will happen here when cp main.js main2.js.
Right now it is a little tricky to detect new entries with factor-bundle, so common-bundle is used instead.