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:
For linting scripts intended to be run with Node.js.
For linting Jasmine tests of Cordova's Node.js scripts.
For linting cordova-style CommonJS modules intended to be run in the browser (before they are bundled).
For linting Jasmine tests of Cordova's browser code.