esbuild-plugin-denolint
Lint your esbuild bundles with denolint.
A lot faster than esbuild-plugin-eslint, handling both JavaScript and TypeScript sources. Use [rollup-plugin-denolint] for Rollup. Use webpack-loader-denolint for Webpack. Or simpler, just the command-line denolint
.
Synopsis
import { build } from 'esbuild'
import { denolint } from 'esbuild-plugin-denolint'
await build({
plugins: [denolint()]
// the rest of the configuration
})
Installation
Make sure that you use Node.js 14 or newer and esbuild 0 or newer. Use your favourite package manager - NPM, PNPM or Yarn:
npm i -D esbuild-plugin-denolint
pnpm i -D esbuild-plugin-denolint
yarn add -D esbuild-plugin-denolint
Usage
Create a build script and import the plugin:
import { build } from 'esbuild'
import { denolint } from 'esbuild-plugin-denolint'
await build({
entryPoints: ['src/index.js'],
outdir: 'dist',
plugins: [
denolint({
exclude: /node_modules|tests/,
rules: {
exclude: ['no-unused-vars']
}
})
]
})
Then call the build script.
Options
The following options can be passed in an object to the plugin function to change the default values.
filter
Type: RegExp
Default: /\.(?:jsx?|tsx?)$/
Regex for file names to match source files to include.
exclude
Type: RegExp
Default: /node_modules/
Regex for file names to match source files to exclude.
configFile
Type: string
Default: '.denolint.json'
Config file to load the tag, rule inclusion and exclusion lists from. File inclusion and exclusion lists are ignored. Use include
and exclude
options of this plugin.
ignoreConfig
Type: boolean
Default: false
Do not look for .denolint.json
by default.
rules
Type: object
Default: undefined
Rules to include or exclude. If specified, the config file will be ignored. See Rules below.
throwOnWarning
Type: boolean
Default: true
Throw an error and abort if any warnings were reported.
throwOnError
Type: boolean
Default: true
Throw an error and abort if source file parsing failed fatally.
format
Type: string
Default: 'pretty'
Format of the warning messages. Either compact
or pretty
(default).
formatter
Type: boolean
Default: true
Custom warning and error formatter:
(messages: string[], id: string, source: string) => string[]
Rules
The following properties are recognised in the rules object.
all
Type: boolean
Default: false
Use all rules if set to true
, otherwise only the recommended ones.
include
Type: string[]
Default: []
List of rules to include extra, if only recommended rules are enabled.
exclude
Type: string[]
Default: []
List of rules to exclude from all or recommended ones.
Alternative
Instead of checking the source files as they are processed, you can check all sources, when the bundler starts. It resembles more how the command-line denolint
works and you can reuse the files.include
and files.exclude
configuration from .denolint.json
:
import { build } from 'esbuild'
import { denolintAll } from 'esbuild-plugin-denolint'
await build({
entryPoints: ['src/index.js'],
outdir: 'dist',
plugins: [
denolintAll()
]
})
Optoins include
, exclude
, configFile
, format
, formatter
, throwOnWarning
, throwOnError
are recognised. Options include
, exclude
override files.include
and files.exclude
from .denolint.json
and have the same meaning. They are not passed to esbuild
.
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Lint and test your code.
License
Copyright (C) 2022-2023 Ferdinand Prantl
Licensed under the MIT License.