nightharbor
v0.7.3
Published
configure batch execution of lighthouse simply
Maintainers
Readme
nightharbor
A lighthouse batch executor providing simple configuration about targeting, execution, and reporting.
use from cli
$ npm i -g nightharbor$ nhb --config [path to config]use from program
$ npm i nightharborimport nhb from "nightharbor";
import config from "./path/to/config";
nhb.exec(config)
.then(() => console.log("done"));
.catch(console.error);configuration
export default {
loaders: [Loader...],
reporters: [Reporter...],
chromeNum: 2,
puppeteerConfig: {puppeteerConfig},
lighthouseConfig: {lighthouseConfig}
}loaders [required]
Array of Loaders. A Loader imports a list of targets for lighthouse execution. An item of the target list must contains url as follows:
{ url: "https://google.com" }Use built-in loaders, external loaders, and your custom loaders.
Use built-in loader
SimpleLoader is a built-in loader to specify a target list manually.
import {SimpleLoader} from "nightharbor/loader";
export default {
//...
loaders: [
new SimpleLoader([
{ url: "https://google.com" },
...
])
]
//...
}Use external loaders
Define custom loader
To define custom Loader, implement asynchronous load method that returns Promise of a list of lighthouse targets.
class CustomLoader {
/**
* @return {Promise<{ url: string, [key: string]: any }[]>}
*/
load(){
//some asynchronous fetch tasks such as read file and api request.
return Promise.resolve([
{ url: "https://google.com" }
]);
}
}reporters [required]
Array of Reporters. A Reporter writes result of lighthouse execution.
Use built-in reporters, external reporters, or your custom reporters.
Use built-in reporter
SimpleReporter is a built-in reporter to output result to console.
import {SimpleReporter} from "nightharbor/reporter";
export default {
...,
reporters: [
new SimpleReporter()
],
...
}Use external reporters
Define custom reporter
Implement open, write, and close method.
class CustomReporter{
/**
* will be called when a lighthouse execution completed
* @param {any} result
* @return {void}
*/
write(result){
//do something
}
/**
* will be called after all executions
* @return {Promise}
*/
close(){
//do something
}
}chromeNum [option]
Number of chromes to launch for running lighthouse.
This parameter is optional. Default value is 1.
puppeteerConfig [option]
Object of options to launch chrome via puppeteer. See launch config of puppeteer
This parameter is optional. Default value is follows:
{
headless: true
}lighthouseConfig [option]
Object of options to run lighthouse. See config of LightHouse
This parameter is optional. Default value is follows:
{
extends: 'lighthouse:default',
settings: {
onlyCategories: ['performance'],
}
}