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.
typesetting/pitfall/pdfkit/node_modules/insert-module-globals
Matthew Butterick 3f36e2ce2c porting 7 years ago
..
bench porting 7 years ago
bin porting 7 years ago
example porting 7 years ago
node_modules/process porting 7 years ago
test porting 7 years ago
.npmignore porting 7 years ago
.travis.yml porting 7 years ago
LICENSE porting 7 years ago
index.js porting 7 years ago
package.json porting 7 years ago
readme.markdown porting 7 years ago

readme.markdown

insert-module-globals

insert implicit module globals (__filename, __dirname, process, global, and Buffer) as a browserify-style transform

build status

example

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

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, 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.

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