J'ai un projet de navigateur Javascript divisé sur plusieurs fichiers et je n'arrive pas à faire ESLint pour peloter les balises de script de mon fichier HTML sous la même portée globale afin que les déclarations et les appels de classes et de fonctions dans un fichier soient reconnus dans un autre.
Voici ma structure de projet:
Voici le contenu de foo.js:
sayHello();
et bar.js:
function sayHello() {
console.log('Hello');
}
Et je les ai liés tous les deux dans le fichier HTML:
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="main.css">
<script src="libraries/bar.js" type="text/javascript"></script>
<script src="foo.js" type="text/javascript"></script>
</head>
<body>
</body>
</html>
J'ai pensé que la solution à cela était d'utiliser le paquet eslint-plugin-html mais j'ai essayé de le configurer sans succès. Voici les packages que j'ai installés localement sur le projet:
Alexs-MacBook-Pro:Demo alexmcdermott$ npm list --depth=0
[email protected] /Users/alexmcdermott/GitHub/Demo
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
J'utilise l'éditeur VSCode mais j'ai également eu le même problème dans le terminal:
Alexs-MacBook-Pro:Demo alexmcdermott$ npx eslint --ext .js,.html .
/Users/alexmcdermott/GitHub/Demo/foo.js
1:1 error 'sayHello' is not defined no-undef
/Users/alexmcdermott/GitHub/Demo/libraries/bar.js
1:10 error 'sayHello' is defined but never used no-unused-vars
2:3 warning Unexpected console statement no-console
✖ 3 problems (2 errors, 1 warning)
et la même chose dans VSCode:
Voici ma configuration ESLint:
{
"env": {
"browser": true,
"es6": true
},
"extends": "airbnb-base",
"plugins": [ "html" ]
}
et j'ai également configuré VSCode pour exécuter ESLint sur des fichiers HTML avec ces options dans mes paramètres utilisateur VSCode:
{
"eslint.autoFixOnSave": true,
"eslint.options": {
"extensions": [ ".js", ".html" ]
},
"eslint.validate": [
"javascript",
{
"language": "html",
"autoFix": true
}
]
}
Bien que je doive faire quelque chose de mal ou que le point eslint-plugin-html me manque? Si quelqu'un a une idée de ce que je fais mal ou comment y remédier, je l'apprécierais grandement car je suis coincé là-dessus depuis des lustres. Veuillez me faire savoir si j'ai besoin de fournir plus d'informations, je suis nouveau dans ce domaine.
J'ai ceci dans <projectfolder>/.vscode/settings.json
{
"eslint.validate": [ "javascript", "html" ]
}
J'utilise un .eslintrc.js
qui ressemble à ceci
module.exports = {
"env": {
"browser": true,
"es6": true
},
"plugins": [
"eslint-plugin-html",
],
"extends": "eslint:recommended",
"rules": {
}
};
J'ai beaucoup de règles définies mais je ne les ai pas collées ci-dessus
Résultat:
npm install eslint-plugin-html --save-dev
dans votre terminal..eslintrc.js
et ajoutez-y plugins: ["html"]
juste après module.exports
. Si tu as .json
ou un format différent du .js
puis suivez simplement le modèle et ajoutez les mêmes valeurs au même niveau d'imbrication../node_modules/.bin/eslint --ext .html .
dans votre terminal.