|
|
const DOMGlobals = ['window', 'document'] const NodeGlobals = ['module', 'require']
module.exports = { parser: '@typescript-eslint/parser', parserOptions: { sourceType: 'module' }, rules: { 'no-unused-vars': [ 'error', // we are only using this rule to check for unused arguments since TS
// catches unused variables but not args.
{ varsIgnorePattern: '.*', args: 'none' } ], // most of the codebase are expected to be env agnostic
'no-restricted-globals': ['error', ...DOMGlobals, ...NodeGlobals], // since we target ES2015 for baseline support, we need to forbid object
// rest spread usage (both assign and destructure)
'no-restricted-syntax': [ 'error', 'ObjectExpression > SpreadElement', 'ObjectPattern > RestElement' ] }, overrides: [ // tests, no restrictions (runs in Node / jest with jsdom)
{ files: ['**/__tests__/**', 'test-dts/**'], rules: { 'no-restricted-globals': 'off', 'no-restricted-syntax': 'off' } }, // shared, may be used in any env
{ files: ['packages/shared/**'], rules: { 'no-restricted-globals': 'off' } }, // Packages targeting DOM
{ files: ['packages/{vue,runtime-dom}/**'], rules: { 'no-restricted-globals': ['error', ...NodeGlobals] } }, // Packages targeting Node
{ files: ['packages/{compiler-sfc,compiler-ssr,server-renderer}/**'], rules: { 'no-restricted-globals': ['error', ...DOMGlobals], 'no-restricted-syntax': 'off' } }, // Private package, browser only + no syntax restrictions
{ files: ['packages/template-explorer/**'], rules: { 'no-restricted-globals': ['error', ...NodeGlobals], 'no-restricted-syntax': 'off' } } ] }
|