This repository centralizes the ESLint configuration used for Cordova's development, specifically repositories that start with apache/cordova-
.
@cordova/eslint-config
comes with all plugins configs and even eslint
itself. So all you need to do to get started is:
npm i -D @cordova/eslint-config
# In package.json { "scripts": { "lint": "eslint" } }
// In eslint.config.js const { defineConfig, globalIgnores } = require('eslint/config'); const nodeConfig = require('@cordova/eslint-config/node'); const nodeTestConfig = require('@cordova/eslint-config/node-tests'); const browserConfig = require('@cordova/eslint-config/browser'); module.exports = defineConfig([ globalIgnores([ // Add files or folders to ignore... // For example: exclude everything in the "coverage" directory. 'coverage' ]), // Node Linting ...nodeConfig.map(config => ({ files: [ // Add files or folders to check... // For example: include everything in the "lib" directory. // By default, ESLint lints files with extensions .js, .mjs & .cjs. 'lib' ], // Spread each shared config to preserve its settings while extending or overriding specific properties ...config })), // Node Test Linting ...nodeTestConfig.map(config => ({ // Add files or folders to check... // For example: include everything in the "spec" directory. // By default, ESLint lints files with extensions .js, .mjs & .cjs. files: [ 'spec' ], // Spread each shared config to preserve its settings while extending or overriding specific properties ...config, // Overriding Rules rules: { // Make sure the original rules are applied ...(config.rules || {}), // Then append or update rules 'prefer-promise-reject-errors': 'off' } })), // Browser Linting ...browserConfig.map(config => ({ files: [ // Add files or folders to check... // For Example: Platforms usuall has "cordova-js-src" that comiles down into a cordova.js file to runs in the app's WebView. 'cordova-js-src' ], // Spread each shared config to preserve its settings while extending or overriding specific properties ...config, // Overriding Language Options languageOptions: { // Make sure the original languageOptions are applied if existing ...(config?.languageOptions || {}), // Overriding Global globals: { // Make sure the original languageOptions.globals are applied ...(config.languageOptions?.globals || {}) // Then append or update globals require: 'readonly', module: 'readonly', } } })) ]);
This package exposes the following shareable ESLint configurations:
@cordova/eslint-config/node
(or simply @cordova
)For linting scripts intended to be run with Node.js.
@cordova/eslint-config/node-tests
For linting Jasmine tests of Cordova's Node.js scripts.
@cordova/eslint-config/browser
For linting cordova-style CommonJS modules intended to be run in the browser (before they are bundled).
@cordova/eslint-config/browser-tests
For linting Jasmine tests of Cordova's browser code.