ESLint plugin to enforce and auto-fix pnpm catalogs.
This plugin consist with two set of rules that applies to package.json
and pnpm-workspace.yaml
respectively.
-
json-
rules applies topackage.json
and requiresjsonc-eslint-parser
to be used as parser. -
yaml-
rules applies topnpm-workspace.yaml
and requiresyaml-eslint-parser
to be used as parser.- YAML support is still experimental as it might have race conditions with other plugins.
pnpm add -D eslint-plugin-pnpm
// eslint.config.mjs
import { configs } from 'eslint-plugin-pnpm'
export default [
{
ignores: ['**/node_modules/**', '**/dist/**'],
},
...configs.json,
...configs.yaml,
]
// eslint.config.mjs
import pluginPnpm from 'eslint-plugin-pnpm'
import * as jsoncParser from 'jsonc-eslint-parser'
import * as yamlParser from 'yaml-eslint-parser'
export default [
{
ignores: ['**/node_modules/**', '**/dist/**'],
},
{
name: 'pnpm/package.json',
files: [
'package.json',
'**/package.json',
],
languageOptions: {
parser: jsoncParser,
},
plugins: {
pnpm: pluginPnpm,
},
rules: {
'pnpm/json-enforce-catalog': 'error',
'pnpm/json-valid-catalog': 'error',
'pnpm/json-prefer-workspace-settings': 'error',
},
},
{
name: 'pnpm/pnpm-workspace-yaml',
files: ['pnpm-workspace.yaml'],
languageOptions: {
parser: yamlParser,
},
plugins: {
pnpm: pluginPnpm,
},
rules: {
'pnpm/yaml-no-unused-catalog-item': 'error',
'pnpm/yaml-no-duplicate-catalog-item': 'error',
},
},
]
MIT License © Anthony Fu