如何获得ESLint来整理VSCode中的HTML文件?

时间:2019-01-11 00:06:44

标签: javascript visual-studio-code eslint lint

我有一个Javascript浏览器项目,该项目分为多个文件,并且无法让ESLint在同一个全局范围内对HTML文件的脚本标记进行整理,因此一个文件中的类和函数的声明和调用可以在另一个文件中识别。

这是我的项目结构:

project structure

这是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
demo@1.0.0 /Users/alexmcdermott/GitHub/Demo
├── eslint@5.12.0
├── eslint-config-airbnb-base@13.1.0
├── eslint-plugin-html@5.0.0
└── eslint-plugin-import@2.14.0

我正在使用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中的相同:

vscode error

这是我的ESLint配置:

{
    "env": {
        "browser": true,
        "es6": true
    },
    "extends": "airbnb-base",
    "plugins": [ "html" ]
}

并且我还配置了VSCode以在VSCode用户设置中使用以下选项在HTML文件上运行ESLint:

{
    "eslint.autoFixOnSave": true,
    "eslint.options": {
        "extensions": [ ".js", ".html" ]
    },
    "eslint.validate": [
        "javascript",
        {
            "language": "html",
            "autoFix": true
        }
    ]
}

尽管我必须做错了什么,还是错过了eslint-plugin-html的要点?如果有人对我做错了什么或如何解决这个问题有任何意见,我将不胜感激,因为我已经坚持了很久了。请让我知道是否需要提供更多信息,这是我的新手。

4 个答案:

答案 0 :(得分:2)

我在<projectfolder>/.vscode/settings.json中有这个

{
  "eslint.validate": [ "javascript", "html" ]
}

我正在使用一个像这样的.eslintrc.js

module.exports = {
  "env": {
    "browser": true,
    "es6": true
  },
  "plugins": [
    "eslint-plugin-html",
  ],
  "extends": "eslint:recommended",
  "rules": {
  }
};

我定义了很多规则,但是没有将它们粘贴到上面

结果:

enter image description here

答案 1 :(得分:2)

使用eslint-plugin-html

  1. 在终端中运行npm install eslint-plugin-html --save-dev
  2. 打开.eslintrc.js,然后在plugins: ["html"]之后添加module.exports。如果您使用.json或与.js不同的格式,则只需遵循该模式并在相同的嵌套级别上添加相同的值即可。
  3. 在您的终端上运行./node_modules/.bin/eslint --ext .html .

答案 2 :(得分:0)

  • 打开.html文件
  • 打开“输出”面板
  • 选择ESLint频道
  • 查看错误并进行纠正

https://example.com/wp_page?id=3570&amp=1]

答案 3 :(得分:0)

尝试使用 htmlhint。它可以很好地整理 html 文件。 https://htmlhint.com/