vfile-reporter-json
vfile utility to create a report in machine readable JSON.
Contents
What is this?
This package is like vfile-reporter
but it outputs machine
readable JSON.
When should I use this?
You can use this when you need to serialize lint results for machines, use
vfile-reporter
itself for humans.
Install
This package is ESM only.
In Node.js (version 16+), install with npm:
npm install vfile-reporter-json
In Deno with esm.sh
:
import {reporterJson} from 'https://esm.sh/vfile-reporter-json@4'
In browsers with esm.sh
:
<script type="module">
import {reporterJson} from 'https://esm.sh/vfile-reporter-json@4?bundle'
</script>
Use
import {VFile} from 'vfile'
import {reporterJson} from 'vfile-reporter-json'
const one = new VFile({path: 'test/fixture/1.js'})
const two = new VFile({path: 'test/fixture/2.js'})
one.message('Warning!', {line: 2, column: 4})
console.log(reporterJson([one, two]))
Yields:
[{"path":"test/fixture/1.js","cwd":"/Users/tilde/Projects/oss/vfile-reporter-json","history":["test/fixture/1.js"],"messages":[{"column":4,"fatal":false,"line":2,"place":{"line":2,"column":4},"reason":"Warning!"}]},{"path":"test/fixture/2.js","cwd":"/Users/tilde/Projects/oss/vfile-reporter-json","history":["test/fixture/2.js"],"messages":[]}]
API
This package exports the identifier reporterJson
.
That identifier is also the default export.
reporterJson(files[, options])
Create a serialized JSON report from one file or multiple files.
Parameters
files
(Array<VFile>
or VFile
)
— file or files to reportoptions
(Options
, default: {}
)
— configuration
Returns
Report as serialized JSON (string
).
Reporters must return strings, which is why serialized JSON is exposed.
You can parse the result with JSON.parse
, in which case you will get
Array<JsonFile>
.
JsonFile
JSON file (TypeScript type).
Fields
cwd
(string
)
— base of path
history
(Array<string>
)
— list of filepaths the file moved between; the first is the original path
and the last is the current pathmessages
(Array<JsonMessage>
)
— list of filepaths the file moved between; the first is the original path
and the last is the current pathpath
(string
)
— full path (example: '~/index.min.js'
)
JsonMessage
JSON message (TypeScript type).
Fields
ancestors
(Array<Node>
or undefined
)
— stack of ancestor nodes surrounding the messagecolumn
(number
or undefined
)
— starting column of messagefatal
(boolean
or undefined
)
— state of problem; true
: error, file not usable; false
: warning,
change may be needed; undefined
: change likely not neededline
(number
or undefined
)
— starting line of messageplace
(Point
, Position
, or
undefined
)
— place of messagereason
(string
)
— reason for message, should use markdownruleId
(string | null
)
— category of message (example: 'my-rule'
)source
(string | null
)
— namespace of message (example: 'my-package'
)actual
(string | null | undefined
)
— specify the source value that’s being reported, which is deemed incorrectexpected
(Array<string> | null | undefined
)
— suggest acceptable values that can be used instead of actual
note
(string | null | undefined
)
— long form description of the message, should use markdownurl
(string | null | undefined
)
— link to docs for the message; this must be an absolute URL that can be
passed as x
to new URL(x)
Options
Configuration (TypeScript type).
Fields
pretty
(boolean
, number
, or string
, default: 0
)
— value of space
of
JSON.stringify(x, undefined, space)
quiet
(boolean
, default: false
)
— do not show files without messagessilent
(boolean
, default: false
)
— show errors only; this does not show info and warning messages; also sets
quiet
to true
Types
This package is fully typed with TypeScript.
It exports the additional types JsonFile
,
JsonMessage
, and Options
.
Compatibility
Projects maintained by the unified collective are compatible with maintained
versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of
Node.
This means we try to keep the current release line, vfile-reporter-json@^4
,
compatible with Node.js 16.
Contribute
See contributing.md
in vfile/.github
for ways to
get started.
See support.md
for ways to get help.
This project has a code of conduct.
By interacting with this repository, organization, or community you agree to
abide by its terms.
License
MIT © Titus Wormer