Skip to content

Commit

Permalink
Migrate ESLint to use flat config file (Fixes #906)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexgibson committed Jun 6, 2024
1 parent e5a36f2 commit 395da2c
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 97 deletions.
5 changes: 0 additions & 5 deletions .eslintignore

This file was deleted.

89 changes: 0 additions & 89 deletions .eslintrc.js

This file was deleted.

2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# HEAD

* **js:** Migrate ESLint to use flat config file (#906)

## Features
* **component:** Add Firefox Klar wordmark for the Wordmark component

Expand Down
136 changes: 136 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
const js = require('@eslint/js');
const globals = require('globals');

const rules = {
// Require `let` or `const` instead of `var`
// https://eslint.org/docs/rules/no-var
'no-var': 'error',

// Require `const` declarations for variables that are never reassigned after declared
// https://eslint.org/docs/rules/prefer-const
'prefer-const': 'error',

// This option sets a specific tab width for your code
// https://eslint.org/docs/rules/indent
'indent': ['error', 4],

// Disallow mixed 'LF' and 'CRLF' as linebreaks
// https://eslint.org/docs/rules/linebreak-style
'linebreak-style': ['error', 'unix'],

// Specify whether double or single quotes should be used
'quotes': ['error', 'single'],

// Require or disallow use of semicolons instead of ASI
'semi': ['error', 'always'],

// Enforce location of semicolons
// https://eslint.org/docs/rules/semi-style
'semi-style': ['error', 'last'],

// Require camel case names
// https://eslint.org/docs/rules/camelcase
'camelcase': ['error', { 'properties': 'always' }],

// Use type-safe equality operators
// https://eslint.org/docs/rules/eqeqeq
'eqeqeq': ['error', 'always'],

// Require newlines around variable declarations
// https://eslint.org/docs/rules/one-var-declaration-per-line
'one-var-declaration-per-line': ['error', 'always'],

// Require constructor names to begin with a capital letter
// https://eslint.org/docs/rules/new-cap
'new-cap': 'error',

// Disallow Use of alert, confirm, prompt
// https://eslint.org/docs/rules/no-alert
'no-alert': 'error',

// Disallow eval()
// https://eslint.org/docs/rules/no-eval
'no-eval': 'error',

// Disallow empty functions
// https://eslint.org/docs/rules/no-empty-function
'no-empty-function': 'error',

// Require radix parameter
// https://eslint.org/docs/rules/radix
'radix': 'error',

// Disallow the use of `console`
// https://eslint.org/docs/rules/no-console
'no-console': 'error'
};

const testingGlobals = {
sinon: true
};

module.exports = [
js.configs.recommended,
{
ignores: ['dist/**/*.js', 'package/**/*.js', 'static/**/*.js', 'theme/static/**/*.js']
},
{
files: ['assets/js/**/*.js'],
languageOptions: {
ecmaVersion: 2017,
globals: {
Mozilla: true,
...globals.browser,
...globals.commonjs
}
},
rules: rules
},
{
files: ['theme/**/*.js'],
languageOptions: {
ecmaVersion: 2017,
globals: {
Mozilla: true,
...globals.browser,
...globals.commonjs,
...globals.node
}
},
rules: rules
},
{
files: ['tests/**/*.js'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: {
Mozilla: true,
...globals.browser,
...globals.jasmine,
...globals.commonjs,
...testingGlobals
}
},
rules: rules
},
{
files: [
'eslint.config.js',
'fractal.config.js',
'webpack.docs.build.config.js',
'webpack.docs.static.config.js',
'webpack.entrypoints.js',
'webpack.package.build.config.js',
'webpack.package.static.config.js'
],
languageOptions: {
ecmaVersion: 'latest',
globals: {
...globals.node,
...globals.commonjs
}
},
rules: rules
}
];
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
"build-docs": "npm ci && npm run lint && webpack --config webpack.docs.static.config.js --mode production && webpack --config webpack.docs.build.config.js --mode production && fractal build",
"build-package": "npm ci && npm run lint && webpack --config webpack.package.static.config.js --mode production && webpack --config webpack.package.build.config.js --mode production",
"lint": "npm run lint-js && npm run lint-css",
"lint-css": "./node_modules/.bin/stylelint \"**/*.scss\"",
"lint-js": "./node_modules/.bin/eslint .",
"lint-css": "npx stylelint \"**/*.scss\"",
"lint-js": "npx eslint .",
"prepublishOnly": "npm run build-package",
"start": "ENV=development fractal start --sync",
"test": "npm run lint && ./node_modules/.bin/karma start ./tests/karma.conf.js",
"test": "npm run lint && npx karma start ./tests/karma.conf.js",
"webpack": "npm run lint && webpack --config webpack.docs.static.config.js --mode development && webpack --config webpack.docs.build.config.js --watch --mode development"
},
"dependencies": {
Expand Down

0 comments on commit 395da2c

Please sign in to comment.