【问题标题】:Multiple run lint-staged when use with husky与 husky 一起使用时,多次运行 lint-staged
【发布时间】:2022-08-21 02:37:58
【问题描述】:

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

例如:

PS E:\\Projects\\sample-project> git status
On branch main
Your branch is up to date with \'origin/main\'.

Changes to be committed:
  (use \"git restore --staged <file>...\" to unstage)
        new file:   .husky/commit-msg
        new file:   .husky/pre-commit
        new file:   .lintstagedrc.json
        modified:   .prettierrc
        new file:   commitlint.config.js
        modified:   nx.json
        modified:   package-lock.json
        modified:   package.json

PS E:\\Projects\\sample-project> npx lint-staged
√ Preparing lint-staged...
√ Running tasks for staged files...
√ Applying modifications from tasks...
√ Cleaning up temporary files...
PS E:\\Projects\\sample-project> 

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

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

npx lint-staged

在终端中,我收到如下信息:

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

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

.lintstagedrc.json

{
  \"*.{js,ts,css,scss,md,html}\": \"prettier --write\",
  \"*.js\": \"eslint --fix\"
}

    标签: javascript configuration husky lint-staged


    【解决方案1】:

    lint-staged 中有一个draft PR 可以解决此问题。与此同时,这个workaround 为我工作:

    #!/usr/bin/env sh
    . "$(dirname -- "$0")/_/husky.sh"
    
    exec >/dev/tty 2>&1
    
    npx lint-staged
    

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

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 2023-03-03
      • 2021-06-11
      • 2019-01-15
      • 2021-05-12
      • 2021-03-02
      • 2023-01-29
      • 2019-10-27
      相关资源
      最近更新 更多