yahoo/extractify

Name: extractify

Owner: Yahoo Inc.

Description: Browserify plugin to extract code to be lazy loaded into separate bundles

Created: 2016-04-21 00:03:47.0

Updated: 2017-12-12 00:48:38.0

Pushed: 2016-06-15 17:58:10.0

Homepage: null

Size: 115

Language: JavaScript

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

extractify

Browserify plugin to extract code to be lazy or on-demand loaded into separate bundles aka code-splitting.

build status

install
install extractify
how it works

Following diagram summarizes how extractify works:

alt tag

  1. dep4 module in above diagram is determined to be loaded as on-demand and should be stripped from the main bundle main.js.
  2. Therefore it will have its own stripped bundle, lazy_bundle_dep4.js which will be loaded later.
  3. The stripped bundle will also include the modules what only dep4 depends on. In this case dep5 is only used by dep4. On the other hand, dep1 module is included in main_app_bundle.js since it was already used by main.js.
  4. Optionally a map object which holds defer loaded module name and bundle name key value pairs can be injected into main entry or different .json config file soft or hard. See bundleMapOption options below
usage

You can use extractify as a browserify plugin:

serify -p [ extractify OPTIONS ]

 see below for OPTIONS
options
ampe command line OPTIONS
serify test/files/main.js -p ['extractify' --lazy [ [ --entries [ './test/files/dep4.js' './test/files/dep6.js' ] --outfile './test/lazy_bundle/lazy_bundle.js' ] ] --bundleMapOption [ --injectSoft false --dest 'test/lazy_bundle/map.json' ] ] > test/lazy_bundle/main_bundle.js

ample api OPTIONS

ndleMapOption: {
injectSoft: false,
dest: 'lazy_bundle/map.json'

zy: [
{
  entries: [
    './files/dep4.js'
  ],
  outfile: './lazy_bundle/lazy_bundle_dep4.js'
}


api plugin example
browserify = require('browserify');
fs = require('fs');
b = browserify(['./files/main.js'], {
basedir: __dirname

ugin('extractify', {
zy: [
{
  entries: [
    './files/dep4.js',
    './files/dep6.js'
  ],
  outfile: './bundles/lazy_bundle.js'
}


ndle().pipe(fs.createWriteStream('./bundles/main_app.js'))
events
b.on('lazyWritten', function (outfile) {})

Emits with lazy bundle outfile right after the splitted bundle written into the file system

b.on('lazyStream', function (stream) {})

Each splitted bundles will emits stream before written into filesystem. The outfile name is available as stream.file.

license

MIT


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.