reduce-js
Use browserify and factor-bundle to pack node-style modules into a single bundle or multiple bundles
Last updated 4 years ago by zoubin .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install reduce-js 
SYNC missed versions from official npm registry.

reduce-js

version status coverage dependencies devDependencies node

Augment browserify with the following features:

  • Accept patterns to add entries.
  • Use watchify2 to watch files, which is able to detect new entries.
  • Use common-bundle to pack modules by default, which make b.bundle() output a stream manipulatable by gulp plugins.

Example

Suppose we want to create one bundle for each js file in /path/to/src, and an additional common bundle to hold modules shared among them.

const reduce = require('reduce-js')
const path = require('path')
const del = require('del')
const uglify = require('gulp-uglify')

bundle(createBundler())

function createBundler(watch) {
  var b = reduce.create(
    /* glob for entries */
    '*.js',

    /* options for browserify */
    {
      basedir: path.join(__dirname, 'src'),
      cache: {},
      packageCache: {},
    },

    /* options for common-bundle */
    // single bundle
    // 'bundle.js',
    // multiple bundles
    {
      groups: '*.js',
      common: 'common.js',
    },

    /* options for watchify2 */
    watch && { entryGlob: '*.js' }
  )
  return b
}

function bundle(b) {
  var build = path.join(__dirname, 'build')
  del.sync(build)
  return b.bundle().pipe(uglify()).pipe(b.dest(build))
}


To watch file changes:

var b = createBundler(true)
b.on('update', function update() {
  bundle(b)
  return update
}())

To work with gulp:

var gulp = require('gulp')
gulp.task('build', function () {
  return bundle(createBundler())
})

gulp.task('watch', function (cb) {
  var b = createBundler(true)
  b.on('update', function update() {
    bundle(b)
    return update
  }())
  b.on('close', cb)
})

API

var reduce = require('reduce-js')
var b = reduce.create(entries, browserifyOptions, bundleOptions, watchifyOptions)

reduce.create(entries, browserifyOptions, bundleOptions, watchifyOptions)

Return a browserify instance.

  • entries: patterns to locate input files. Check [globby] for more details.
  • browserifyOptions: options for browserify.
  • bundleOptions: options for common-bundle.
  • watchifyOptions: options for watchify2. If truthy, file changes are watched.

b.bundle()

Return a [vinyl] stream, which can be processed by gulp plugins.

b.bundle().pipe(require('gulp-uglify')()).pipe(b.dest('build'))

b.dest(outFolder, options)

The same with gulp.dest.

Related

Current Tags

  • 10.1.0                                ...           latest (4 years ago)

27 Versions

  • 10.1.0                                ...           4 years ago
  • 10.0.2                                ...           4 years ago
  • 10.0.1                                ...           4 years ago
  • 10.0.0                                ...           4 years ago
  • 9.4.0                                ...           4 years ago
  • 9.3.0                                ...           4 years ago
  • 9.2.0                                ...           4 years ago
  • 9.1.0                                ...           4 years ago
  • 9.0.0                                ...           4 years ago
  • 8.1.0                                ...           4 years ago
  • 8.0.1                                ...           4 years ago
  • 8.0.0                                ...           4 years ago
  • 7.0.2                                ...           4 years ago
  • 7.0.1                                ...           4 years ago
  • 7.0.0                                ...           4 years ago
  • 6.0.0                                ...           5 years ago
  • 5.0.2                                ...           5 years ago
  • 5.0.1                                ...           5 years ago
  • 5.0.0                                ...           5 years ago
  • 4.0.0                                ...           5 years ago
  • 3.0.1                                ...           5 years ago
  • 3.0.0                                ...           5 years ago
  • 2.1.1 [deprecated]           ...           5 years ago
  • 2.1.0                                ...           5 years ago
  • 2.0.0                                ...           5 years ago
  • 1.0.0                                ...           5 years ago
  • 0.0.1                                ...           5 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 27
Dependencies (6)
Dev Dependencies (4)

Copyright 2014 - 2016 © taobao.org |