UNPKG

windowify

Version:

Allows regular JavaScript files to expose global variables and functions when bundled with Browserify

111 lines (85 loc) 2.29 kB
# Windowify Allows regular JavaScript files to expose global variables and functions when bundled with Browserify. We can find old code written this way: * jquery.js: ```javascript function jQuery(selector) { /* ... */ } ``` * test.js: ```javascript var $element = jQuery('#some-element'); ``` When we bundle the file with the `jQuery` definition, we loose the global reference to jQuery because it is no longer declared in the top level scope: ```bash browserify jquery.js -o jquery.bundled.js ``` * jquery.bundled.js: ```javascript /* PREAMBLE */ })({ 1: [ function(require, module, exports) { // jQuery is not global now! function jQuery(selector) { /* ... */ } }, {} ] }, {}, [1]); ``` This module transforms those files exposing those variables to window: ```bash browserify jquery.js -t windowify -o jquery.bundled.js ``` * jquery.bundled.js: ```javascript /* PREAMBLE */ })({ 1: [ function(require, module, exports) { (function(window) { function jQuery(selector) { /* ... */ } // jQuery is global again! window.jQuery = exports.jQuery = jQuery; }).call(window, window); }, {} ] }, {}, [1]); ``` It also sets `window` as the context of the code (for code setting global variables to `this`). ## Installation ```bash npm install windowify --save-dev ``` ## Usage Like any other browserify transform, you can use in 3 ways: * Adding the configuration to the `package.json`: ```json { "browserify": { "transform": [ ["windowify", {"files": "**/jquery.js", "debug": true}] ] } } ``` * Command-line usage: ```bash browserify entry-point.js -t [ windowify **/jquery.js --debug ] -o entry-point.bundle.js ``` * Programmatic usage: ```javascript var b = browserify('entry-point.js'); b.transform('windowify', {files: '**/jquery.js', debug: true}]); ``` ## Contribute 1. Fork it: `git clone https://github.com/rubennorte/windowify.git` 2. Create your feature branch: `git checkout -b my-new-feature` 3. Commit your changes: `git commit -am 'Add some feature'` 4. Check the build: `npm run build` 4. Push to the branch: `git push origin my-new-feature` 5. Submit a pull request :D