@nice-move/eslint-plugin-html
ESLint plugin to lint script tags in HTML.
Installation
npm install @nice-move/eslint-plugin-html --save-dev
Usage
Eslint 8.x
// eslintrc.js
module.exports = {
extends: ['plugin:@nice-move/html/recommended']
};
// or
module.exports = {
extends: ['plugin:@nice-move/html/base']
};
// or
module.exports = {
overrides: [
{
files: ['*.{htm,html}'],
plugins: ['@nice-move/eslint-plugin-html']
},
{
files: ['**/*.{htm,html}/**/html-script-legacy.js'],
parserOptions: {
sourceType: 'script'
}
},
{
files: ['**/*.{htm,html}/**/html-script-module.js'],
parserOptions: {
sourceType: 'module'
}
}
]
};
Eslint 9.x
// eslint.config.mjs
import {
base,
recommended
} from '@nice-move/eslint-plugin-html/lib/configs-next.mjs';
let configs = [...base];
// or
configs = [...recommended];
// or
configs = [
{
files: ['*.{htm,html}'],
processor: '@nice-move/html/html',
plugins: {
'@nice-move/html': plugin
}
},
{
files: ['**/*.{htm,html}/**/html-script-legacy.js'],
parserOptions: {
sourceType: 'script'
}
},
{
files: ['**/*.{htm,html}/**/html-script-module.js'],
parserOptions: {
sourceType: 'module'
}
}
];
export default config;
Todos
Tips
@nice-move/eslint-plugin-html
using processor to treat <script>
and <script type="module">
differently.
See: https://github.com/BenoitZugmeyer/eslint-plugin-html/issues/139
And @nice-move/eslint-plugin-html
is bundle-able.
When using Eslint for VS Code, you may need to add following code to settings:
// example: settings.json or .vscode/settings.json
// I don't know why `eslint-plugin-html` don't need this.
{
"eslint.validate": ["html"]
}
Known Issues
Not compatible with import/first rule.
See: https://github.com/import-js/eslint-plugin-import/issues/2407
<script>
import 'http://something';
console.log('this example trigger error');
</script>
Can't share variable between multiple script tags
See: Reason why