Awesome
Clinic.js Doctor
Programmable interface to Clinic.js Doctor. Learn more about Clinic.js: https://clinicjs.org/
Issues
To open an issue, please use the main repository with the doctor
label.
Installation
npm i -S @clinic/doctor
Supported node versions
- Node.js 16 and above
Example
const ClinicDoctor = require('@clinic/doctor')
const doctor = new ClinicDoctor()
doctor.collect(['node', './path-to-script.js'], function (err, filepath) {
if (err) throw err
doctor.visualize(filepath, filepath + '.html', function (err) {
if (err) throw err
});
})
You can find examples in node-clinic-doctor-examples
Documentation
const ClinicDoctor = require('@clinic/doctor')
const doctor = new ClinicDoctor()
new ClinicDoctor([settings])
- settings
<Object>
- sampleInterval
<Number>
Time between each sample in milliseconds. Default: 10 - detectPort
<boolean>
Default: false - dest
<String>
The folder where the collected data is stored. Default: '.' - debug
<boolean>
If set to true, the generated html will not be minified. Default: false - collectDelay
<Number>
Default: 0
- sampleInterval
doctor.collect(args, callback)
Starts a process by using:
const { spawn } = require('child_process')
spawn(args[0], ['-r', 'sampler.js'].concat(args.slice(1)))
The injected sampler will produce a file in the current working directory, with the process PID in its filename. The filepath relative to the current working directory will be the value in the callback.
stdout, stderr, and stdin will be relayed to the calling process. As will the
SIGINT
event.
doctor.visualize(dataFilename, outputFilename, callback)
Will consume the datafile specified by dataFilename
, this datafile will be
produced by the sampler using doctor.collect
.
doctor.visualize
will then output a standalone HTML file to outputFilename
.
When completed the callback
will be called with no extra arguments, except a
possible error.