build: Drop ESLint from esbuild

Similar to what commit c9ac6736b3 did for stylelint, move
ESLint to static code checks as well. It already runs from there (and
actually correctly since the previous commit).
This commit is contained in:
Martin Pitt 2024-02-07 16:21:20 +01:00 committed by Martin Pitt
parent 005cff4c95
commit 1a28b31828
3 changed files with 1 additions and 41 deletions

View File

@ -94,9 +94,6 @@ pkg/lib/), you can also build all pages:
./build.js -w
Note that this enables eslint by default -- if you want to disable it, run it
with `-e`/`--no-eslint`.
Reload cockpit in your browser after page is built. Press `Ctrl`-`C` to
stop watch mode once you are done with changing the code.
@ -232,7 +229,7 @@ The tests require at least `pytest` 7.0.0 or higher to run.
Cockpit uses [ESLint](https://eslint.org/) to automatically check JavaScript
code style in `.js` and `.jsx` files.
The linter is executed on every build.
The linter is executed as part of `test/static-code`.
For developer convenience, the ESLint can be started explicitly by:

View File

@ -50,7 +50,6 @@ const qunitOptions = {
const parser = (await import('argparse')).default.ArgumentParser();
parser.add_argument('-r', '--rsync', { help: "rsync bundles to ssh target after build", metavar: "HOST" });
parser.add_argument('-w', '--watch', { action: 'store_true', help: "Enable watch mode" });
parser.add_argument('-e', '--no-eslint', { action: 'store_true', help: "Disable eslint linting", default: production });
parser.add_argument('onlydir', { nargs: '?', help: "The pkg/<DIRECTORY> to build (eg. base1, shell, ...)", metavar: "DIRECTORY" });
const args = parser.parse_args();
@ -111,7 +110,6 @@ async function build() {
const cockpitPoEsbuildPlugin = (await import('./pkg/lib/cockpit-po-plugin.js')).cockpitPoEsbuildPlugin;
const cockpitRsyncEsbuildPlugin = (await import('./pkg/lib/cockpit-rsync-plugin.js')).cockpitRsyncEsbuildPlugin;
const cockpitTestHtmlPlugin = (await import('./pkg/lib/esbuild-test-html-plugin.js')).cockpitTestHtmlPlugin;
const eslintPlugin = (await import('./pkg/lib/esbuild-eslint-plugin.js')).eslintPlugin;
const esbuildStylesPlugins = (await import('./pkg/lib/esbuild-common.js')).esbuildStylesPlugins;
@ -124,7 +122,6 @@ async function build() {
];
const pkgPlugins = [
...args.no_eslint ? [] : [eslintPlugin({ filter: /pkg\/.*\.(jsx?|js?)$/ })],
cockpitJSResolvePlugin,
...esbuildStylesPlugins
];
@ -181,7 +178,6 @@ async function build() {
...qunitOptions,
entryPoints: testEntryPoints,
plugins: [
...args.no_eslint ? [] : [eslintPlugin({ filter: /pkg\/.*\.(jsx?|js?)$/ })],
cockpitTestHtmlPlugin({ testFiles: tests }),
],
});
@ -200,7 +196,6 @@ async function build() {
...qunitOptions,
entryPoints: testEntryPoints,
plugins: [
...args.no_eslint ? [] : [eslintPlugin({ filter: /pkg\/.*\.(jsx?|js?)$/ })],
cockpitTestHtmlPlugin({ testFiles: tests }),
],
});

View File

@ -1,32 +0,0 @@
// Replace with plugin from npmjs once they become good enough
// Candidate 1: requires https://github.com/to-codando/esbuild-plugin-linter/issues/1 and https://github.com/to-codando/esbuild-plugin-linter/issues/3 to get fixed
// Candidate 2: requires https://github.com/robinloeffel/esbuild-plugin-eslint/issues/4 and https://github.com/robinloeffel/esbuild-plugin-eslint/issues/5 to get fixed
import { ESLint } from 'eslint';
const NAME = 'eslintPlugin';
export const eslintPlugin = ({ filter = /src\/.*\.(jsx?|js?)$/ } = {}) => ({
name: NAME,
setup(build) {
const filesToLint = [];
const eslint = new ESLint();
build.onLoad({ filter }, ({ path }) => {
filesToLint.push(path);
});
build.onEnd(async () => {
const result = await eslint.lintFiles(filesToLint);
const formatter = await eslint.loadFormatter('stylish');
const output = formatter.format(result);
if (output.length > 0) {
console.log(output); // eslint-disable no-console
return {
errors: [{ pluginName: NAME, text: 'ESLint errors found' }]
};
}
return null;
});
},
});