1. insert-module-globals
insert implicit module globals into a module-deps stream
insert-module-globals
Package: insert-module-globals
Created by: browserify
Last modified: Tue, 08 Nov 2022 10:39:46 GMT
Version: 7.2.1
License: MIT
Downloads: 3,861,949
Repository: https://github.com/browserify/insert-module-globals

Install

npm install insert-module-globals
yarn add insert-module-globals

insert-module-globals

insert implicit module globals
(__filename, __dirname, process, global, setImmediate, clearImmediate 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 true, 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. When
opts.always is truthy but not true, avoid parsing but perform a quick test to
determine if wrapping should be skipped.

Use opts.vars to override the default inserted variables, or set
opts.vars[name] to undefined to not insert a variable which would otherwise
be inserted.

opts.vars properties with a . in their name will be executed instead of the
parent object if ONLY that property is used. For example, "Buffer.isBuffer"
will mask "Buffer" only when there is a Buffer.isBuffer() call in a file and
no other references to Buffer.

If opts.debug is true, an inline source map will be generated to compensate
for the extra lines.

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 (file, basedir) {
        return {
            id: "path/to/custom_process.js",
            source: customProcessContent
        }
    },
    Buffer: function (file, 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

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code