An open API service indexing awesome lists of open source software.

https://github.com/apache/cordova-eslint

Apache Cordova - ESLint
https://github.com/apache/cordova-eslint

cordova eslint javascript

Last synced: 8 days ago
JSON representation

Apache Cordova - ESLint

Awesome Lists containing this project

README

          

# @cordova/eslint-config

[![NPM](https://nodei.co/npm/@cordova/eslint-config.svg?style=flat&data=n,v,u&color=blue)](https://www.npmjs.com/package/@cordova/eslint-config)

[![Node CI](https://github.com/apache/cordova-eslint/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/apache/cordova-eslint/actions/workflows/ci.yml?query=branch%3Amaster)
[![Release Audit](https://github.com/apache/cordova-eslint/actions/workflows/release-audit.yml/badge.svg?branch=master)](https://github.com/apache/cordova-eslint/actions/workflows/release-audit.yml?query=branch%3Amaster)
[![codecov.io](https://codecov.io/github/apache/cordova-eslint/coverage.svg?branch=master)](https://codecov.io/github/apache/cordova-eslint?branch=master)

This repository centralizes the ESLint configuration used for Cordova's development, specifically repositories that start with `apache/cordova-`.

## Installation

`@cordova/eslint-config` comes with all plugins configs and even `eslint` itself. So all you need to do to get started is:

```shell
npm i -D @cordova/eslint-config
```

## Usage

```yml
# In package.json
{
"scripts": {
"lint": "eslint"
}
}
```

```javascript
// 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',
}
}
}))
]);
```

## Reference

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.