UNPKG

eslint-plugin-green

Version:

ESLint plugin for evaluating and promoting green coding practices

89 lines (73 loc) 2.78 kB
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;