一覧へ戻る
calvinmetcalf/rollup-plugin-node-globals(新しいタブで開きます)
主要言語: JavaScript
- star 数
- 91
- watcher 数
- 2
- fork 数
- 22
- issue 数
- 37
- 最終更新
- 2022/12/09
主要言語: JavaScript
Plugin to insert node globals including so code that works with browserify should work even if it uses process or buffers. This is based on rollup-plugin-inject .
__dirname__filenamePlus process.nextTick and process.browser are optimized to only pull in
themselves and __dirname and __filename point to the file on disk
There are a few options to control output
process - pass false to disable process polyfillingglobal - pass false to disable global polyfillingbuffer - pass false to disable Buffer polyfillingdirname - pass false to disable __dirname polyfillingfilename - pass false to disable __filename polyfillingbaseDir which is used for resolving __dirname and __filename.var foo; if (process.browser) { foo = 'bar'; } else { foo = 'baz'; }
turns into
import {browser} from 'path/to/process'; var foo; if (browser) { foo = 'bar'; } else { foo = 'baz'; }
but with rollup that ends up being
var browser = true; var foo; if (browser) { foo = 'bar'; } else { foo = 'baz'; }
or
var timeout; if (global.setImmediate) { timeout = global.setImmediate; } else { timeout = global.setTimeout; } export default timeout;
turns into
import {_global} from 'path/to/global.js'; var timeout; if (_global.setImmediate) { timeout = _global.setImmediate; } else { timeout = _global.setTimeout; } export default timeout;
which rollup turns into
var _global = typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {} var timeout; if (_global.setImmediate) { timeout = _global.setImmediate; } else { timeout = _global.setTimeout; } var timeout$1 = timeout; export default timeout$1;
With that top piece only showing up once no matter how many times global was used.