nightharbor
v0.7.3
Published
configure batch execution of lighthouse simply
Downloads
23
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 nightharbor
import 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 Loader
s. 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 Reporter
s. 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'],
}
}