The nyc instrument
command can produce instrumented source files.
These files are suitable for client side deployment during end to end testing.
You can either pre-instrument your source, or write instrumented source to a stream.
Run nyc instrument --help
to display a full list of available command options.
You can create pre-instrumented source code by running:
nyc instrument <input> [output]
<input>
can be any file or directory within the project root directory.
The [output]
directory is optional and can be located anywhere, if not set the instrumented code will be sent to stdout
.
For example, nyc instrument . ./output
will produce instrumented versions of any source files it finds in .
and store them in ./output
.
The --delete
option will remove the existing output directory before instrumenting.
The --in-place
option will allow you to run the instrument command.
The --complete-copy
option will copy all remaining files from the input
directory to the output
directory.
When using --complete-copy
nyc will not copy the contents of a .git
folder to the output directory.
Note: --complete-copy
will dereference any symlinks during the copy process, this may stop scripts running properly from the output directory.
nyc instrument <input>
will stream instrumented source directly to stdout
and that output can then be piped to another process.
You can use this behaviour to create a server that dynamically instruments files on request.
The following example shows streaming instrumentation middleware capable of instrumenting files on request.
app.use((req, res, next) => {
const myOptions = ""
const filename = myHelper.getFilename(req)
const nyc = cp.spawn(`nyc instrument ${myOptions} ${filename}`)
nyc.stdout.pipe(res)
})