与 husky 一起使用时多次运行 lint-staged

Kor*_*rad 9 javascript configuration husky lint-staged

当我npx lint-staged在终端中使用时,一切看起来都正常。

\n

例如:

\n
PS E:\\Projects\\sample-project> git status\nOn branch main\nYour branch is up to date with \'origin/main\'.\n\nChanges to be committed:\n  (use "git restore --staged <file>..." to unstage)\n        new file:   .husky/commit-msg\n        new file:   .husky/pre-commit\n        new file:   .lintstagedrc.json\n        modified:   .prettierrc\n        new file:   commitlint.config.js\n        modified:   nx.json\n        modified:   package-lock.json\n        modified:   package.json\n\nPS E:\\Projects\\sample-project> npx lint-staged\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n\xe2\x88\x9a Applying modifications from tasks...\n\xe2\x88\x9a Cleaning up temporary files...\nPS E:\\Projects\\sample-project> \n
Run Code Online (Sandbox Code Playgroud)\n

但是当我的哈士奇pre-commit钩子运行相同的命令时:

\n
#!/usr/bin/env sh\n. "$(dirname "$0")/_/husky.sh"\n\nnpx lint-staged\n
Run Code Online (Sandbox Code Playgroud)\n

在终端中我收到类似这样的信息:

\n
PS E:\\Projects\\sample-project> git commit -m"ci(core): configure project\n>> \n>> edit prettier\n>> add husky, commit-lint, lint-staged"\n\xe2\x96\xa0 Preparing lint-staged...\n\xe2\x96\xa0 Preparing lint-staged...\n\xe2\x96\xa0 Running tasks for staged files...\n\xe2\x96\xa0 Preparing lint-staged...\n\xe2\x96\xa0 Running tasks for staged files...\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Preparing lint-staged...\n\xe2\x96\xa0 Running tasks for staged files...\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n- Preparing lint-staged...\n\xe2\x96\xa0 Running tasks for staged files...\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\\ Preparing lint-staged...\n\xe2\x96\xa0 Running tasks for staged files...\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n| Preparing lint-staged...\n\xe2\x96\xa0 Running tasks for staged files...\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x96\xa0 Running tasks for staged files...\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n| Running tasks for staged files...\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  \xe2\x96\xa0 .lintstagedrc.json \xe2\x80\x94 8 files\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  | .lintstagedrc.json \xe2\x80\x94 8 files\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x96\xa0 *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x96\xa0 *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    \xe2\x96\xa0 *.js \xe2\x80\x94 1 file\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    | *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    \xe2\x96\xa0 *.js \xe2\x80\x94 1 file\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    | *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    | *.js \xe2\x80\x94 1 file\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    | *.js \xe2\x80\x94 1 file\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n      \xe2\x96\xa0 prettier --write\n    > *.js \xe2\x80\x94 1 file\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n      \xe2\x96\xa0 prettier --write\n    > *.js \xe2\x80\x94 1 file\n      \xe2\x96\xa0 eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n      | prettier --write\n    > *.js \xe2\x80\x94 1 file\n      \xe2\x96\xa0 eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n      | prettier --write\n    > *.js \xe2\x80\x94 1 file\n      | eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n      / prettier --write\n    > *.js \xe2\x80\x94 1 file\n      / eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n      - prettier --write\n    > *.js \xe2\x80\x94 1 file\n      - eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n      \\ prettier --write\n    > *.js \xe2\x80\x94 1 file\n      \\ eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n      | prettier --write\n    > *.js \xe2\x80\x94 1 file\n      | eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    > *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n      \xe2\x88\x9a prettier --write\n    > *.js \xe2\x80\x94 1 file\n      | eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      | eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      / eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      - eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      \\ eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      | eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      / eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      - eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      \\ eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      | eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      / eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      - eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      \\ eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    > *.js \xe2\x80\x94 1 file\n      \xe2\x88\x9a eslint --fix\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  > .lintstagedrc.json \xe2\x80\x94 8 files\n    \xe2\x88\x9a *.{js,ts,css,scss,md,html} \xe2\x80\x94 1 file\n    \xe2\x88\x9a *.js \xe2\x80\x94 1 file\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n> Running tasks for staged files...\n  \xe2\x88\x9a .lintstagedrc.json \xe2\x80\x94 8 files\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n\xe2\x96\xa0 Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n\\ Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n| Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n\xe2\x88\x9a Applying modifications from tasks...\n\xe2\x96\xa0 Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n\xe2\x88\x9a Applying modifications from tasks...\n| Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n\xe2\x88\x9a Applying modifications from tasks...\n/ Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n\xe2\x88\x9a Applying modifications from tasks...\n\xe2\x88\x9a Cleaning up temporary files...\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n\xe2\x88\x9a Applying modifications from tasks...\n\xe2\x88\x9a Cleaning up temporary files...\nlint commit\n[main 3110d3d] ci(core): configure project\n 8 files changed, 10673 insertions(+), 3421 deletions(-)\n create mode 100644 .husky/commit-msg\n create mode 100644 .husky/pre-commit\n create mode 100644 .lintstagedrc.json\n create mode 100644 commitlint.config.js\nPS E:\\Projects\\sample-project> \n\n
Run Code Online (Sandbox Code Playgroud)\n

有人知道我该如何解决这个问题吗?

\n

.lintstagedrd.json

\n
PS E:\\Projects\\sample-project> git status\nOn branch main\nYour branch is up to date with \'origin/main\'.\n\nChanges to be committed:\n  (use "git restore --staged <file>..." to unstage)\n        new file:   .husky/commit-msg\n        new file:   .husky/pre-commit\n        new file:   .lintstagedrc.json\n        modified:   .prettierrc\n        new file:   commitlint.config.js\n        modified:   nx.json\n        modified:   package-lock.json\n        modified:   package.json\n\nPS E:\\Projects\\sample-project> npx lint-staged\n\xe2\x88\x9a Preparing lint-staged...\n\xe2\x88\x9a Running tasks for staged files...\n\xe2\x88\x9a Applying modifications from tasks...\n\xe2\x88\x9a Cleaning up temporary files...\nPS E:\\Projects\\sample-project> \n
Run Code Online (Sandbox Code Playgroud)\n

小智 7

lint-staged 中有一个PR 草案可以解决这个问题。与此同时,这个解决方法对我有用:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

exec >/dev/tty 2>&1

npx lint-staged
Run Code Online (Sandbox Code Playgroud)

https://github.com/okonet/lint-staged/issues/1164#issuecomment-1177561594

  • 不幸的是,这种解决方法并不适用于所有环境,因为 /dev/tty 可能是“未定义”(因此您会收到错误消息,没有找到这样的设备或地址)...希望他们会尽快修复它 (2认同)