JavaScriptブラウザープロジェクトを複数のファイルに分割していて、ESLintでHTMLファイルのスクリプトタグを同じグローバルスコープでリントできないため、1つのファイルのクラスと関数の宣言と呼び出しが別のファイルで認識されるようにします。
これが私のプロジェクト構造です:
これはfoo.jsの内容です。
sayHello();
およびbar.js:
function sayHello() {
console.log('Hello');
}
そして私はそれらを両方とも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>
これに対する解決策はeslint-plugin-htmlパッケージを使用することだと思っていましたが、うまくいかずに構成しようとしました。これらは、プロジェクトにローカルにインストールしたパッケージです。
Alexs-MacBook-Pro:Demo alexmcdermott$ npm list --depth=0
[email protected] /Users/alexmcdermott/GitHub/Demo
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
私はVSCodeエディターを使用していますが、ターミナルにも同じ問題がありました。
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)
vSCodeでも同じ:
これは私のESLint設定です:
{
"env": {
"browser": true,
"es6": true
},
"extends": "airbnb-base",
"plugins": [ "html" ]
}
また、VSCodeユーザー設定で次のオプションを使用してHTMLファイルでESLintを実行するようにVSCodeを構成しました。
{
"eslint.autoFixOnSave": true,
"eslint.options": {
"extensions": [ ".js", ".html" ]
},
"eslint.validate": [
"javascript",
{
"language": "html",
"autoFix": true
}
]
}
私は何か間違ったことをしている必要がありますか、それともeslint-plugin-htmlの要点を逃していますか?誰かが私が間違っていることやこれを修正する方法について何か意見を持っている場合、私はこれを何年もずっと続けてきたので、それを大いに感謝します。さらに情報を提供する必要がある場合はお知らせください。これは初めてです。
npm install eslint-plugin-html --save-dev
を実行します。.eslintrc.js
を開き、plugins: ["html"]
の直後にmodule.exports
を追加します。 .json
または.js
とは異なる形式の場合は、パターンに従い、同じネストレベルに同じ値を追加します。./node_modules/.bin/eslint --ext .html .
を実行します。