packages/eslint-config-fbjs/scripts/check-rules.js (25 lines of code) (raw):

/** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ /** * Finds rules that are supported by ESLint but not defined in our config. */ var ourRules = new Set(Object.keys(require('..').rules)); var supportedRules = new Set(Object.keys(require('eslint/lib/load-rules')())); // Get plugins from package.json. Assume they're all in peerDependencies. var plugins = Object.keys(require('../package.json').peerDependencies) .filter((dep) => dep.startsWith('eslint-plugin')) .map((dep) => dep.replace('eslint-plugin-', '')); plugins.forEach((plugin) => { Object.keys(require(`eslint-plugin-${plugin}`).rules).forEach((rule) => { supportedRules.add(`${plugin}/${rule}`); }); }); var missing = new Set(); var extra = new Set(); ourRules.forEach((rule) => { if (!supportedRules.has(rule)) { extra.add(rule); } }); supportedRules.forEach((rule) => { if (!ourRules.has(rule)) { missing.add(rule); } }); console.log('missing', missing); console.log('extra', extra);