$ cnpm install jsonc-eslint-parser
JSON, JSONC and JSON5 parser for use with ESLint plugins.
This parser allows us to lint JSON, JSONC and JSON5 files. This parser and the rules of eslint-plugin-jsonc would catch some of the mistakes and code style violations.
See eslint-plugin-jsonc for details.
npm i --save-dev jsonc-eslint-parser
In your ESLint configuration file, set the parser property:
import * as jsoncParser from "jsonc-eslint-parser";
export default [
{
// ...
// Add the following settings.
files: ["**/*.json", "**/*.json5"], // Specify the extension or pattern you want to parse as JSON.
languageOptions: {
parser: jsoncParser, // Set this parser.
}
},
];
In your ESLint configuration file, set the overrides > parser property:
{
// ...
// Add the following settings.
"overrides": [
{
"files": ["*.json", "*.json5"], // Specify the extension or pattern you want to parse as JSON.
"parser": "jsonc-eslint-parser", // Set this parser.
},
],
}
The following additional configuration options are available by specifying them in parserOptions in your ESLint configuration file.
{
// Additional configuration options
"parserOptions": {
"jsonSyntax": "JSON5"
}
}
parserOptions.jsonSyntaxSet to "JSON", "JSONC" or "JSON5". Select the JSON syntax you are using.
If not specified, all syntaxes that express static values are accepted. For example, template literals without interpolation.
Note : Recommended to loosen the syntax checking by the parser and use check rules of eslint-plugin-jsonc to automatically fix it.
parseJSON(code, options?)Parses the given JSON source code and returns the AST.
import { parseJSON } from "jsonc-eslint-parser";
const ast = parseJSON('{"key": "value"}', { jsonSyntax: "JSON" });
console.log(ast);
Parameters:
code (string): The JSON source code to parse.options (object, optional): Parser options.
jsonSyntax ("JSON" | "JSONC" | "JSON5"): The JSON syntax to use.Returns: JSONProgram - The root AST node.
parseForESLint(code, options?)Parses the given JSON source code for ESLint. This is the main parser function used by ESLint.
import { parseForESLint } from "jsonc-eslint-parser";
const result = parseForESLint('{"key": "value"}', { jsonSyntax: "JSON" });
console.log(result.ast);
console.log(result.services);
console.log(result.visitorKeys);
Parameters:
code (string): The JSON source code to parse.options (object, optional): Parser options (same as parseJSON).Returns: An object containing:
ast: The root AST node.services: An object with helper methods like getStaticJSONValue().visitorKeys: Visitor keys for traversing the AST.tokenize(code, options?)Tokenizes the given JSON source code and returns an array of tokens.
import { tokenize } from "jsonc-eslint-parser";
const tokens = tokenize('{"key": "value"}', { jsonSyntax: "JSON" });
console.log(tokens);
// [
// { type: 'Punctuator', value: '{', range: [0, 1], loc: {...} },
// { type: 'String', value: '"key"', range: [1, 6], loc: {...} },
// { type: 'Punctuator', value: ':', range: [6, 7], loc: {...} },
// { type: 'String', value: '"value"', range: [8, 15], loc: {...} },
// { type: 'Punctuator', value: '}', range: [15, 16], loc: {...} }
// ]
// Include comments in the result
const tokensWithComments = tokenize('{"key": "value" /* comment */}', {
jsonSyntax: "JSONC",
includeComments: true
});
Parameters:
code (string): The JSON source code to tokenize.options (object, optional): Parser options.
jsonSyntax ("JSON" | "JSONC" | "JSON5"): The JSON syntax to use.includeComments (boolean): If true, comments are included in the result array.Returns: Token[] or (Token | Comment)[] - An array of tokens, optionally including comments.
jsonc-eslint-parser follows Semantic Versioning.
See the LICENSE file for license rights and limitations (MIT).
Copyright 2013 - present © cnpmjs.org | Home |