eslint-plugin-toml is ESLint plugin provides linting rules for TOML.
This ESLint plugin provides linting rules for TOML.
- You can use ESLint to lint TOML.
- You can find out the problem with your TOML files.
- You can apply consistent code styles to your TOML files.
- Supports Vue SFC custom blocks such as
<custom-block lang="toml">.
Requirementsvue-eslint-parserv7.3.0 and above. - Supports ESLint directives. e.g.
# eslint-disable-next-line - You can check your code in real-time using the ESLint editor integrations.
You can check on the Online DEMO.
See documents.
npm install --save-dev eslint eslint-plugin-tomlRequirements
- ESLint v6.0.0 and above
- Node.js v12.22.x, v14.17.x, v16.x and above
Use eslint.config.js file to configure rules. See also: https://eslint.org/docs/latest/use/configure/configuration-files-new.
Example eslint.config.js:
import eslintPluginToml from 'eslint-plugin-toml';
export default [
// add more generic rule sets here, such as:
// js.configs.recommended,
...eslintPluginToml.configs['flat/recommended'],
{
rules: {
// override/add rules settings here, such as:
// 'toml/rule-name': 'error'
}
}
];This plugin provides configs:
*.configs['flat/base']... Configuration to enable correct TOML parsing.*.configs['flat/recommended']... Above, plus rules to prevent errors or unintended behavior.*.configs['flat/standard']... Above, plus rules to enforce the common stylistic conventions.
See the rule list to get the rules that this plugin provides.
Use .eslintrc.* file to configure rules. See also: https://eslint.org/docs/latest/use/configure/.
Example .eslintrc.js:
module.exports = {
extends: [
// add more generic rulesets here, such as:
// 'eslint:recommended',
'plugin:toml/standard'
],
rules: {
// override/add rules settings here, such as:
// 'toml/rule-name': 'error'
}
}This plugin provides configs:
plugin:toml/base... Configuration to enable correct TOML parsing.plugin:toml/recommended... Above, plus rules to prevent errors or unintended behavior.plugin:toml/standard... Above, plus rules to enforce the common stylistic conventions.
Note that these configurations do not enable ESLint's core rules. For example, the following style rules can also be used in TOML.
{
"rules": {
"comma-spacing": "error",
"no-multi-spaces": ["error", { "exceptions": { "TOMLKeyValue": true } }],
"no-multiple-empty-lines": "error",
"no-trailing-spaces": "error"
}
}See the rule list to get the rules that this plugin provides.
If you have specified a parser, you need to configure a parser for .toml.
For example, if you are using the "@babel/eslint-parser", configure it as follows:
module.exports = {
// ...
extends: ["plugin:toml/standard"],
// ...
parser: "@babel/eslint-parser",
// Add an `overrides` section to add a parser configuration for TOML.
overrides: [
{
files: ["*.toml"],
parser: "toml-eslint-parser",
},
],
// ...
};If you want to run eslint from the command line, make sure you include the .toml extension using the --ext option or a glob pattern, because ESLint targets only .js files by default.
Examples:
eslint --ext .js,.toml src
eslint "src/**/*.{js,toml}"Use the dbaeumer.vscode-eslint extension that Microsoft provides officially.
You have to configure the eslint.validate option of the extension to check .toml files, because the extension targets only *.js or *.jsx files by default.
Example .vscode/settings.json:
{
"eslint.validate": [
"javascript",
"javascriptreact",
"toml"
]
}The --fix option on the command line automatically fixes problems reported by rules which have a wrench π§ below.
The rules with the following star β are included in the configs.
| Rule ID | Description | Fixable | RECOMMENDED | STANDARD |
|---|---|---|---|---|
| toml/indent | enforce consistent indentation | π§ | β | |
| toml/keys-order | disallow defining pair keys out-of-order | π§ | β | |
| toml/no-mixed-type-in-array | disallow mixed data types in array | |||
| toml/no-non-decimal-integer | disallow hexadecimal, octal and binary integer | π§ | ||
| toml/no-space-dots | disallow spacing around infix operators | π§ | β | |
| toml/no-unreadable-number-separator | disallow number separators that to not enhance readability. | β | β | |
| toml/padding-line-between-pairs | require or disallow padding lines between pairs | π§ | β | |
| toml/padding-line-between-tables | require or disallow padding lines between tables | π§ | β | |
| toml/precision-of-fractional-seconds | disallow precision of fractional seconds greater than the specified value. | β | β | |
| toml/precision-of-integer | disallow precision of integer greater than the specified value. | β | β | |
| toml/quoted-keys | require or disallow quotes around keys | π§ | β | |
| toml/tables-order | disallow defining tables out-of-order | π§ | β | |
| toml/vue-custom-block/no-parsing-error | disallow parsing errors in Vue custom blocks | β | β |
| Rule ID | Description | Fixable | RECOMMENDED | STANDARD |
|---|---|---|---|---|
| toml/array-bracket-newline | enforce linebreaks after opening and before closing array brackets | π§ | β | |
| toml/array-bracket-spacing | enforce consistent spacing inside array brackets | π§ | β | |
| toml/array-element-newline | enforce line breaks between array elements | π§ | β | |
| toml/comma-style | enforce consistent comma style in array | π§ | β | |
| toml/inline-table-curly-spacing | enforce consistent spacing inside braces | π§ | β | |
| toml/key-spacing | enforce consistent spacing between keys and values in key/value pairs | π§ | β | |
| toml/spaced-comment | enforce consistent spacing after the # in a comment |
π§ | β | |
| toml/table-bracket-spacing | enforce consistent spacing inside table brackets | π§ | β |
β οΈ We're going to remove deprecated rules in the next major release. Please migrate to successor/new rules.- π We don't fix bugs which are in deprecated rules since we don't have enough resources.
| Rule ID | Replaced by |
|---|---|
| toml/space-eq-sign | toml/key-spacing |
Welcome contributing!
Please use GitHub's Issues/PRs.
npm testruns tests and measures coverage.npm run updateruns in order to update readme and recommended configuration.
This plugin uses toml-eslint-parser for the parser. Check here to find out about AST.
- eslint-plugin-jsonc ... ESLint plugin for JSON, JSON with comments (JSONC) and JSON5.
- eslint-plugin-yml ... ESLint plugin for YAML.
- eslint-plugin-json-schema-validator ... ESLint plugin that validates data using JSON Schema Validator.
- jsonc-eslint-parser ... JSON, JSONC and JSON5 parser for use with ESLint plugins.
- yaml-eslint-parser ... YAML parser for use with ESLint plugins.
- toml-eslint-parser ... TOML parser for use with ESLint plugins.
See the LICENSE file for license rights and limitations (MIT).