You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
3.4 KiB
Markdown
137 lines
3.4 KiB
Markdown
# insert-module-globals
|
|
|
|
insert implicit module globals
|
|
(`__filename`, `__dirname`, `process`, `global`, and `Buffer`)
|
|
as a browserify-style transform
|
|
|
|
[![build status](https://secure.travis-ci.org/substack/insert-module-globals.png)](http://travis-ci.org/substack/insert-module-globals)
|
|
|
|
# example
|
|
|
|
``` js
|
|
var mdeps = require('module-deps');
|
|
var bpack = require('browser-pack');
|
|
var insert = require('insert-module-globals');
|
|
function inserter (file) {
|
|
return insert(file, { basedir: __dirname + '/files' });
|
|
}
|
|
|
|
var files = [ __dirname + '/files/main.js' ];
|
|
mdeps(files, { transform: inserter })
|
|
.pipe(bpack({ raw: true }))
|
|
.pipe(process.stdout)
|
|
;
|
|
```
|
|
|
|
```
|
|
$ node example/insert.js | node
|
|
in main.js: {"__filename":"/main.js","__dirname":"/"}
|
|
in foo/index.js: {"__filename":"/foo/index.js","__dirname":"/foo"}
|
|
```
|
|
|
|
or use the command-line scripts:
|
|
|
|
```
|
|
$ module-deps main.js | insert-module-globals | browser-pack | node
|
|
in main.js: {"__filename":"/main.js","__dirname":"/"}
|
|
in foo/index.js: {"__filename":"/foo/index.js","__dirname":"/foo"}
|
|
```
|
|
|
|
or use insert-module-globals as a transform:
|
|
|
|
```
|
|
$ module-deps main.js --transform insert-module-globals | browser-pack | node
|
|
in main.js: {"__filename":"/main.js","__dirname":"/"}
|
|
in foo/index.js: {"__filename":"/foo/index.js","__dirname":"/foo"}
|
|
```
|
|
|
|
# methods
|
|
|
|
``` js
|
|
var insertGlobals = require('insert-module-globals')
|
|
```
|
|
|
|
## var inserter = insertGlobals(file, opts)
|
|
|
|
Return a transform stream `inserter` for the filename `file` that will accept a
|
|
javascript file as input and will output the file with a closure around the
|
|
contents as necessary to define extra builtins.
|
|
|
|
When `opts.always` is truthy, wrap every file with all the global variables
|
|
without parsing. This is handy because parsing the scope can take a long time,
|
|
so you can prioritize fast builds over saving bytes in the final output.
|
|
|
|
Use `opts.vars` to override the default inserted variables, or set
|
|
`opts.vars[name]` to `undefined` to override an undefined variable that has
|
|
already been set by default.
|
|
|
|
# events
|
|
|
|
## inserter.on('global', function (name) {})
|
|
|
|
When a global is detected, the inserter stream emits a `'global'` event.
|
|
|
|
# usage
|
|
|
|
```
|
|
usage: insert-module-globals {basedir}
|
|
```
|
|
|
|
# install
|
|
|
|
With [npm](https://npmjs.org), to get the library do:
|
|
|
|
```
|
|
npm install insert-module-globals
|
|
```
|
|
|
|
and to get the bin script do:
|
|
|
|
```
|
|
npm install -g insert-module-globals
|
|
```
|
|
|
|
# insert custom globals.
|
|
|
|
`insert-module-globals` can also insert arbitary globals into files.
|
|
Pass in an object of functions as the `vars` option.
|
|
|
|
``` js
|
|
var vars = {
|
|
process: function (row, basedir) {
|
|
return {
|
|
id: "path/to/custom_process.js",
|
|
source: customProcessContent
|
|
}
|
|
},
|
|
Buffer: function (row, basedir) {
|
|
return {
|
|
id: "path/to/custom_buffer.js,
|
|
source: customProcessContent,
|
|
//suffix is optional
|
|
//it's used to extract the value from the module.
|
|
//it becomes: require(...).Buffer in this case.
|
|
suffix: '.Buffer'
|
|
}
|
|
},
|
|
Math: function () {
|
|
//if you return a string,
|
|
//it's simply set as the value.
|
|
return '{}'
|
|
//^ any attempt to use Math[x] will throw!
|
|
}
|
|
}
|
|
|
|
function inserter (file) {
|
|
return insert(file, { vars: vars });
|
|
}
|
|
mdeps(files, { transform: inserter })
|
|
.pipe(bpack({ raw: true }))
|
|
.pipe(process.stdout)
|
|
```
|
|
|
|
|
|
# license
|
|
|
|
MIT
|