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:
/* ... */
}
```- test.js:
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: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:
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
npm install windowify --save-dev
Usage
Like any other browserify transform, you can use in 3 ways:- Adding the configuration to the
package.json
:
{
"browserify": {
"transform": [
["windowify", {"files": "**/jquery.js", "debug": true}]
]
}
}
- Command-line usage:
browserify entry-point.js -t [ windowify **/jquery.js --debug ] -o entry-point.bundle.js
- Programmatic usage:
var b = browserify('entry-point.js');
b.transform('windowify', {files: '**/jquery.js', debug: true}]);
Contribute
- Fork it:
git clone https://github.com/rubennorte/windowify.git
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Check the build:
npm run build
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D