phantomjs-nodify
v0.1.1
Published
Makes PhantomJS more compatible with Node.js
Readme
phantomjs-nodify
Set of scripts that make PhantomJS environment more similar to Node.js. I implemented what I needed for my scripts. Feel free to fork and add more.
Implemented features:
- ~~Module support mostly compatible with CommonJS and Node.js, i.e.
require()works not only for PhantomJS built-in modules. Most of the functionality from Node.js Modules (up to ThemoduleObject) should work.~~ Merged into PhantomJS since PhantomJS 1.7. - ~~Exceptions thrown from required files are properly reported (with file name
and line number). Line number for
.coffeefiles may not be accurate.~~ Merged into PhantomJS since PhantomJS 1.7. - Global
processobject (some basic functionality + emitsuncaughtExceptionon exceptions that occur insidesetTimeoutblocks). consolewith string formatting (e.g.console.log('hello %s', 'world')).- Some Node.js modules (see
lib/modulesdir). - Other minor tweaks.
Some code taken from Node.js. Uses Mocha + Chai for testing.
How to use
npm install phantomjs-nodify --save
Require in your PhantomJS script at the very first line:
require('phantomjs-nodify');Stubbing require()
This feature no longer depends on phantomjs-nodify. Since PhantomJS 1.7 it is available in PhantomJS itself, but remains an undocumented secret ;)
Since commit PhantomJS 1.7 you can stub required modules in the given module
context which helps porting Node.js libraries. For example, let's say you have
a module file a.js in the same directory as your main script. You require
this module in the main script (require('./a')). Then, a.js contains:
require.stub('zlib', {
createGzip: function() { ... }
});
var something = require('some_node.js_module_that_requires_zlib');Now require('zlib') will return the object with the createGzip function in
a.js and in every module required by it, but not in parent modules (in this
case require('zlib') will throw a "Cannot find module" exception in the main
script).
This is especially useful when trying to require libraries written for Node.js which require modules not included in phantomjs-nodify.
Running tests
If you fork and add something, please write tests for it. You can run the tests after fetching the necessary submodules:
git submodule init
git submodule update
make test