eslint-plugin-green
Version:
ESLint plugin for evaluating and promoting green coding practices
89 lines (73 loc) • 2.78 kB
text/typescript
import type { Rule } from 'eslint';
// Performance rules
import noInefficientLoops = require('./rules/performance/noInefficientLoops');
import preferArrayMethods = require('./rules/performance/preferArrayMethods');
// DOM rules
import optimizeDomOperations = require('./rules/dom/optimizeDomOperations');
// Memory rules
import avoidMemoryLeaks = require('./rules/memory/avoidMemoryLeaks');
// CSS rules
import optimizeCssSelectors = require('./rules/css/optimizeCssSelectors');
// Network rules
import optimizeNetworkRequests = require('./rules/network/optimizeNetworkRequests');
// Media rules
import optimizeImageLoading = require('./rules/media/optimizeImageLoading');
// Performance rules
import optimizeAnimations = require('./rules/performance/optimizeAnimations');
import optimizeDataStructures = require('./rules/performance/optimizeDataStructures');
// Green score reporter
import { greenScoreReporter } from './reporters/green-score';
const plugin = {
rules: {
// Performance
'no-inefficient-loops': noInefficientLoops,
'prefer-array-methods': preferArrayMethods,
// DOM
'optimize-dom-operations': optimizeDomOperations,
// Memory
'avoid-memory-leaks': avoidMemoryLeaks,
// CSS
'optimize-css-selectors': optimizeCssSelectors,
// Network
'optimize-network-requests': optimizeNetworkRequests,
// Media
'optimize-image-loading': optimizeImageLoading,
// Performance
'optimize-animations': optimizeAnimations,
'optimize-data-structures': optimizeDataStructures
},
configs: {
recommended: {
plugins: ['green'],
rules: {
'green/no-inefficient-loops': 'warn',
'green/prefer-array-methods': 'warn',
'green/optimize-dom-operations': 'warn',
'green/avoid-memory-leaks': 'warn',
'green/optimize-css-selectors': 'warn',
'green/optimize-network-requests': 'warn',
'green/optimize-image-loading': 'warn',
'green/optimize-animations': 'warn',
'green/optimize-data-structures': 'warn'
}
},
strict: {
plugins: ['green'],
rules: {
'green/no-inefficient-loops': 'error',
'green/prefer-array-methods': 'error',
'green/optimize-dom-operations': 'error',
'green/avoid-memory-leaks': 'error',
'green/optimize-css-selectors': 'error',
'green/optimize-network-requests': 'error',
'green/optimize-image-loading': 'error',
'green/optimize-animations': 'error',
'green/optimize-data-structures': 'error'
}
}
},
reporters: {
'green-score': greenScoreReporter
}
} as const;
export = plugin;