YSlow.js on Node.js is a simple Node.js wrapper for programmatically running phantomjs yslow.js
.
- PhantomJS in your
PATH
. - Tested on the following node versions (via Travis-ci.org):
- 0.8
- 0.10
:::shell
$ npm install yslowjs
See Phapper if you're having issues with PhantomJS.
You can specify different versions of YSlow.js using npm config
:
$ npm config set yslowjs_version
You will have to reinstall
yslowjs
if you change this option after initially installing it.
:::js
var yslow = new YSlow('http://example.com/path/foo',
[ '--arg value' ]);
// Supported:
// info specify the information to display/log (basic|grade|stats|comps|all) [all],
// ruleset specify the YSlow performance ruleset to be used (ydefault|yslow1|yblog) [ydefault],
// beacon specify an URL to log the results,
// ua specify the user agent string sent to server when the page requests resources,
// viewport specify page viewport size WxY, where W = width and H = height [400x300],
// headers specify custom request headers, e.g.: -ch '{\'Cookie\': \'foo=bar\'}',
// WARNING: format is locked at json, so don't pass it!
:::js
// file: async.js
var YSlow = require('lib/yslow');
var yslow = new YSlow('http://mervine.net/projects/npms/yslowjs',
[ '--info basic' ]);
console.log('\nRunning (Async)....');
yslow.run( function (error, result) {
if (error) {
console.trace(error);
} else {
console.log('=> overall: ' + result.o);
console.log('=> load time: ' + result.lt);
}
});
:::js
// file: sync.js
var YSlow = require('lib/yslow');
var yslow = new YSlow('http://mervine.net/projects/npms/yslowjs',
[ '--info basic' ]);
console.log('\nRunning (Sync)....');
var results = yslow.runSync();
console.log('=> overall: ' + results.o);
console.log('=> load time: ' + results.lt);
:::js
var YSlow = require('lib/yslow');
YSlow.prototype.script = '/path/to/your/yslow.js';
// continue on