all da files
This commit is contained in:
		
							
								
								
									
										343
									
								
								node_modules/browserify/readme.markdown
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										343
									
								
								node_modules/browserify/readme.markdown
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,343 @@
 | 
			
		||||
# browserify
 | 
			
		||||
 | 
			
		||||
`require('modules')` in the browser
 | 
			
		||||
 | 
			
		||||
Use a [node](http://nodejs.org)-style `require()` to organize your browser code
 | 
			
		||||
and load modules installed by [npm](https://npmjs.org).
 | 
			
		||||
 | 
			
		||||
browserify will recursively analyze all the `require()` calls in your app in
 | 
			
		||||
order to build a bundle you can serve up to the browser in a single `<script>`
 | 
			
		||||
tag.
 | 
			
		||||
 | 
			
		||||
[](http://travis-ci.org/substack/node-browserify)
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
# example
 | 
			
		||||
 | 
			
		||||
Whip up a file, `main.js` with some `require()s` in it. You can use relative
 | 
			
		||||
paths like `'./foo'` and `'../lib/bar'` or module paths like `'gamma'` that will
 | 
			
		||||
search `node_modules/` using
 | 
			
		||||
[node's module lookup algorithm](https://github.com/substack/node-resolve).
 | 
			
		||||
 | 
			
		||||
``` js
 | 
			
		||||
var foo = require('./foo');
 | 
			
		||||
var bar = require('../lib/bar');
 | 
			
		||||
var gamma = require('gamma');
 | 
			
		||||
 | 
			
		||||
var elem = document.getElementById('result');
 | 
			
		||||
var x = foo(100) + bar('baz');
 | 
			
		||||
elem.textContent = gamma(x);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Now just use the `browserify` command to build a bundle starting at `main.js`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ browserify main.js > bundle.js
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
All of the modules that `entry.js` needs are included in the `bundle.js` from a
 | 
			
		||||
recursive walk of the `require()` graph using
 | 
			
		||||
[required](https://github.com/shtylman/node-required).
 | 
			
		||||
 | 
			
		||||
To use this bundle, just toss a `<script src="bundle.js"></script>` into your
 | 
			
		||||
html!
 | 
			
		||||
 | 
			
		||||
## external requires
 | 
			
		||||
 | 
			
		||||
You can just as easily create bundle that will export a `require()` function so
 | 
			
		||||
you can `require()` modules from another script tag. Here we'll create a
 | 
			
		||||
`bundle.js` with the [through](https://npmjs.org/package/through)
 | 
			
		||||
and [duplexer](https://npmjs.org/package/duplexer) modules.
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ browserify -r through -r duplexer > bundle.js
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Then in your page you can do:
 | 
			
		||||
 | 
			
		||||
``` js
 | 
			
		||||
<script src="bundle.js"></script>
 | 
			
		||||
<script>
 | 
			
		||||
  var through = require('through');
 | 
			
		||||
  var duplexer = require('duplexer');
 | 
			
		||||
  /* ... */
 | 
			
		||||
</script>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## multiple bundles
 | 
			
		||||
 | 
			
		||||
If browserify finds a `require` function already defined in the page scope, it
 | 
			
		||||
will fall back to that function if it didn't find any matches in its own set of
 | 
			
		||||
bundled modules.
 | 
			
		||||
 | 
			
		||||
In this way you can use browserify to split up bundles among multiple pages to
 | 
			
		||||
get the benefit of caching for shared, infrequently-changing modules, while
 | 
			
		||||
still being able to use `require()`. Just use a combination of `--external` and
 | 
			
		||||
`--require` to factor out common dependencies.
 | 
			
		||||
 | 
			
		||||
For example, if a website with 2 pages, `beep.js`:
 | 
			
		||||
 | 
			
		||||
``` js
 | 
			
		||||
var robot = require('./robot');
 | 
			
		||||
console.log(robot('beep'));
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
and `boop.js`:
 | 
			
		||||
 | 
			
		||||
``` js
 | 
			
		||||
var robot = require('./robot');
 | 
			
		||||
console.log(robot('boop'));
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
both depend on `robot.js`:
 | 
			
		||||
 | 
			
		||||
``` js
 | 
			
		||||
module.exports = function (s) { return s.toUpperCase() + '!' };
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ browserify -r ./robot > static/common.js
 | 
			
		||||
$ browserify -x ./robot.js beep.js > static/beep.js
 | 
			
		||||
$ browserify -x ./robot.js boop.js > static/boop.js
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Then on the beep page you can have:
 | 
			
		||||
 | 
			
		||||
``` html
 | 
			
		||||
<script src="common.js"></script>
 | 
			
		||||
<script src="beep.js"></script>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
while the boop page can have:
 | 
			
		||||
 | 
			
		||||
``` html
 | 
			
		||||
<script src="common.js"></script>
 | 
			
		||||
<script src="boop.js"></script>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# usage
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
Usage: browserify [entry files] {OPTIONS}
 | 
			
		||||
 | 
			
		||||
Standard Options:
 | 
			
		||||
 | 
			
		||||
  --outfile, -o    Write the browserify bundle to this file.
 | 
			
		||||
                   If unspecified, browserify prints to stdout.
 | 
			
		||||
 | 
			
		||||
  --require, -r    A module name or file to bundle.require()
 | 
			
		||||
                   Optionally use a colon separator to set the target.
 | 
			
		||||
 | 
			
		||||
  --entry, -e      An entry point of your app
 | 
			
		||||
  
 | 
			
		||||
  --ignore, -i     Omit a file from the output bundle.
 | 
			
		||||
 | 
			
		||||
  --external, -x   Reference a file from another bundle.
 | 
			
		||||
  
 | 
			
		||||
  --transform, -t  Use a transform module on top-level files.
 | 
			
		||||
 
 | 
			
		||||
  --command, -c    Use a transform command on top-level files.
 | 
			
		||||
 | 
			
		||||
  --help, -h       Show this message
 | 
			
		||||
 | 
			
		||||
Advanced Options:
 | 
			
		||||
 | 
			
		||||
  --insert-globals, --ig, --fast    [default: false]
 | 
			
		||||
 | 
			
		||||
    Skip detection and always insert definitions for process, global,
 | 
			
		||||
    __filename, and __dirname.
 | 
			
		||||
                  
 | 
			
		||||
    benefit: faster builds
 | 
			
		||||
    cost: extra bytes
 | 
			
		||||
 
 | 
			
		||||
  --detect-globals, --dg            [default: true]
 | 
			
		||||
 | 
			
		||||
    Detect the presence of process, global, __filename, and __dirname and define
 | 
			
		||||
    these values when present.
 | 
			
		||||
 | 
			
		||||
    benefit: npm modules more likely to work
 | 
			
		||||
    cost: slower builds
 | 
			
		||||
 | 
			
		||||
  --ignore-missing, --im            [default: false]
 | 
			
		||||
 | 
			
		||||
    Ignore `require()` statements that don't resolve to anything.
 | 
			
		||||
 | 
			
		||||
  --debug -d                        [default: false]
 | 
			
		||||
    
 | 
			
		||||
    Enable source maps that allow you to debug your files separately.
 | 
			
		||||
 
 | 
			
		||||
Specify a parameter.
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# compatibility
 | 
			
		||||
 | 
			
		||||
Many [npm](http://npmjs.org) modules that don't do IO will just work after being
 | 
			
		||||
browserified. Others take more work.
 | 
			
		||||
 | 
			
		||||
Many node built-in modules have been wrapped to work in the browser, but only
 | 
			
		||||
when you explicitly `require()` or use their functionality.
 | 
			
		||||
 | 
			
		||||
When you `require()` any of these modules, you will get a browser-specific shim:
 | 
			
		||||
 | 
			
		||||
* events
 | 
			
		||||
* stream
 | 
			
		||||
* path
 | 
			
		||||
* assert
 | 
			
		||||
* url
 | 
			
		||||
* util
 | 
			
		||||
* querystring
 | 
			
		||||
* buffer
 | 
			
		||||
* buffer_ieee754
 | 
			
		||||
* console
 | 
			
		||||
* [vm](https://github.com/substack/vm-browserify)
 | 
			
		||||
* [http](https://github.com/substack/http-browserify)
 | 
			
		||||
* [crypto](https://github.com/dominictarr/crypto-browserify)
 | 
			
		||||
* [zlib](https://github.com/brianloveswords/zlib-browserify)
 | 
			
		||||
 | 
			
		||||
Additionally if you use any of these variables, they
 | 
			
		||||
[will be defined](https://github.com/substack/insert-module-globals)
 | 
			
		||||
in the bundled output in a browser-appropriate way:
 | 
			
		||||
 | 
			
		||||
* [process](https://github.com/shtylman/node-process)
 | 
			
		||||
* [Buffer](https://github.com/toots/buffer-browserify)
 | 
			
		||||
* global - top-level scope object (window)
 | 
			
		||||
* __filename - file path of the currently executing file
 | 
			
		||||
* __dirname - directory path of the currently executing file
 | 
			
		||||
 | 
			
		||||
# methods
 | 
			
		||||
 | 
			
		||||
``` js
 | 
			
		||||
var browserify = require('browserify')
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## var b = browserify(files=[])
 | 
			
		||||
 | 
			
		||||
Create a browserify instance `b` from the entry main `files`.
 | 
			
		||||
`files` can be an array of files or a single file.
 | 
			
		||||
 | 
			
		||||
## b.add(file)
 | 
			
		||||
 | 
			
		||||
Add an entry file from `file` that will be executed when the bundle loads.
 | 
			
		||||
 | 
			
		||||
## b.require(name)
 | 
			
		||||
 | 
			
		||||
Make `name` available from outside the bundle with `require(name)`.
 | 
			
		||||
 | 
			
		||||
The package `name` is anything that can be resolved by `require.resolve()`.
 | 
			
		||||
 | 
			
		||||
## b.bundle(opts, cb)
 | 
			
		||||
 | 
			
		||||
Bundle the files and their dependencies into a single javascript file.
 | 
			
		||||
 | 
			
		||||
Return a readable stream with the javascript file contents or
 | 
			
		||||
optionally specify a `cb(err, src)` to get the buffered results.
 | 
			
		||||
 | 
			
		||||
When `opts.insertGlobals` is true, always insert `process`, `global`,
 | 
			
		||||
`__filename`, and `__dirname` without analyzing the AST for faster builds but
 | 
			
		||||
larger output bundles. Default false.
 | 
			
		||||
 | 
			
		||||
When `opts.detectGlobals` is true, scan all files for `process`, `global`,
 | 
			
		||||
`__filename`, and `__dirname`, defining as necessary. With this option npm
 | 
			
		||||
modules are more likely to work but bundling takes longer. Default true.
 | 
			
		||||
 | 
			
		||||
When `opts.debug` is true, add a source map inline to the end of the bundle.
 | 
			
		||||
This makes debugging easier because you can see all the original files if
 | 
			
		||||
you are in a modern enough browser.
 | 
			
		||||
 | 
			
		||||
## b.external(file)
 | 
			
		||||
 | 
			
		||||
Prevent `file` from being loaded into the current bundle, instead referencing
 | 
			
		||||
from another bundle.
 | 
			
		||||
 | 
			
		||||
## b.ignore(file)
 | 
			
		||||
 | 
			
		||||
Prevent the module name or file at `file` from showing up in the output bundle.
 | 
			
		||||
 | 
			
		||||
## b.transform(tr)
 | 
			
		||||
 | 
			
		||||
Transform source code before parsing it for `require()` calls with the transform
 | 
			
		||||
function or module name `tr`.
 | 
			
		||||
 | 
			
		||||
If `tr` is a function, it will be called with `tr(file)` and it should return a
 | 
			
		||||
[through-stream](https://github.com/substack/stream-handbook#through)
 | 
			
		||||
that takes the raw file contents and produces the transformed source.
 | 
			
		||||
 | 
			
		||||
If `tr` is a string, it should be a module name or file path of a
 | 
			
		||||
[transform module](https://github.com/substack/module-deps#transforms)
 | 
			
		||||
with a signature of:
 | 
			
		||||
 | 
			
		||||
``` js
 | 
			
		||||
var through = require('through');
 | 
			
		||||
module.exports = function (file) { return through() };
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You don't need to necessarily use the
 | 
			
		||||
[through](https://npmjs.org/package/through) module, this is just a simple
 | 
			
		||||
example.
 | 
			
		||||
 | 
			
		||||
Here's how you might compile coffee script on the fly using `.transform()`:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
var coffee = require('coffee-script');
 | 
			
		||||
var through = require('through');
 | 
			
		||||
 | 
			
		||||
b.transform(function (file) {
 | 
			
		||||
    var data = '';
 | 
			
		||||
    return through(write, end);
 | 
			
		||||
    
 | 
			
		||||
    function write (buf) { data += buf }
 | 
			
		||||
    function end () {
 | 
			
		||||
        this.queue(coffee.compile(data));
 | 
			
		||||
        this.queue(null);
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Note that on the command-line with the `-c` flag you can just do:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ browserify -c 'coffee -sc' main.coffee > bundle.js
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Or better still, use the [coffeeify](https://github.com/substack/coffeeify)
 | 
			
		||||
module:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ npm install coffeeify
 | 
			
		||||
$ browserify -t coffeeify main.coffee > bundle.js
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# package.json
 | 
			
		||||
 | 
			
		||||
browserify uses the `package.json` in its module resolution algorithm just like
 | 
			
		||||
node, but there is a special
 | 
			
		||||
"[browsers](https://gist.github.com/4339901)" field you can set to override file
 | 
			
		||||
resolution for browser-specific versions.
 | 
			
		||||
 | 
			
		||||
You can specify source transforms in the package.json in the
 | 
			
		||||
browserify.transforms field. There is more information about how source
 | 
			
		||||
transforms work in package.json on the
 | 
			
		||||
[module-deps readme](https://github.com/substack/module-deps#transforms).
 | 
			
		||||
 | 
			
		||||
# list of source transforms
 | 
			
		||||
 | 
			
		||||
Here is a list of known source transforms:
 | 
			
		||||
 | 
			
		||||
* [brfs](https://github.com/substack/brfs) - inline
 | 
			
		||||
`fs.readFileSync()` calls with file contents
 | 
			
		||||
 | 
			
		||||
* [coffeeify](https://github.com/substack/coffeeify) - compile
 | 
			
		||||
`.coffee` files to javascript automatically
 | 
			
		||||
 | 
			
		||||
# install
 | 
			
		||||
 | 
			
		||||
With [npm](http://npmjs.org) do:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
npm install -g browserify
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# license
 | 
			
		||||
 | 
			
		||||
MIT
 | 
			
		||||
		Reference in New Issue
	
	Block a user