提问人:JK Laiho 提问时间:10/8/2023 最后编辑:JK Laiho 更新时间:10/8/2023 访问量:119
如何让新式的 ESLint 配置与预提交一起使用?
How to get new-style ESLint config working with pre-commit?
问:
我有一个项目,除其他外,还具有官方 ESLint 钩子。它在使用旧式配置时可以完美运行,但用新式配置替换它会导致它失败。.pre-commit-config.yaml
.eslintrc.json
eslint.config.js
钩子配置如下所示:
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.51.0
hooks:
- id: eslint
types: [javascript]
additional_dependencies: [
'[email protected]',
'[email protected]',
'@eslint/js',
'[email protected]'
]
运行 ,ESLint 本身和列出的依赖项似乎安装没有错误(没有创建)。我没有全局安装 ESLint。pre-commit install-hooks
~/.cache/pre-commit/pre-commit.log
这是一切工作的旧式配置:.eslintc.json
{
"env": {
"es2022": true,
"browser": true
},
"extends": [
"eslint:recommended",
"prettier"
],
"ignorePatterns": [
"project/static/htmx/**"
],
"parserOptions": {
"sourceType": "module"
},
"rules": {}
}
但是,使用这个方法会失败,尽管与 ESLint 文档中的新样式配置示例相比,它似乎完全有效:eslint.config.js
import globals from "globals";
import js from "@eslint/js";
import eslintConfigPrettier from "eslint-config-prettier";
export default [
js.configs.recommended,
eslintConfigPrettier,
{
languageOptions: {
globals: {
...globals.browser,
},
sourceType: "module",
ecmaVersion: 2022,
},
},
{
ignores: ["project/static/htmx/**"],
},
];
这是运行时的错误:pre-commit run --all-files
eslint...................................................................Failed
- hook id: eslint
- exit code: 2
Oops! Something went wrong! :(
ESLint: 8.51.0
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'globals' imported from /Users/jkl/Development/foobar/eslint.config.js
Did you mean to import globals/index.js?
at new NodeError (node:internal/errors:406:5)
at packageResolve (node:internal/modules/esm/resolve:789:9)
at moduleResolve (node:internal/modules/esm/resolve:838:20)
at defaultResolve (node:internal/modules/esm/resolve:1043:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:383:12)
at ModuleLoader.resolve (node:internal/modules/esm/loader:352:25)
at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:228:38)
at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)
at link (node:internal/modules/esm/module_job:84:36)
ERR_MODULE_NOT_FOUND
如果我将它们移动到第一行,则其他两个导入同样会提高,所以这不是问题。globals
尽管我为这三个导入安装了所有必要的依赖项以以记录的方式工作,但找不到它们。所以有些东西不对劲,而且钩子与旧式配置一起工作得很好,根本没有改变,这让我认为要么 a) 我错过了一些关键的配置,要么 b) ESLint 钩子只是出于某种原因不支持新式配置,或者 c) ESLint 本身与新配置和预提交安装方式的组合存在某种不兼容。eslint.config.js
.pre-commit-config.yaml
我不是日常生活中的NodeJS用户,也不熟悉提交前的内部工作原理。我很乐意进一步调试并发布更多信息来帮助解决这个问题,并就下一步要寻找的内容提供一些帮助。
答: 暂无答案
评论