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>
orVFile
) — 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 ofpath
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>
orundefined
) — stack of ancestor nodes surrounding the messagecolumn
(number
orundefined
) — starting column of messagefatal
(boolean
orundefined
) — state of problem;true
: error, file not usable;false
: warning, change may be needed;undefined
: change likely not neededline
(number
orundefined
) — starting line of messageplace
(Point
,Position
, orundefined
) — 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 ofactual
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 asx
tonew URL(x)
Options
Configuration (TypeScript type).
Fields
pretty
(boolean
,number
, orstring
, default:0
) — value ofspace
ofJSON.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 setsquiet
totrue
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.