标签: lint-staged

GitHub 桌面 Husky 预提交钩子没有

我按照许多其他项目安装了(在 Mac OS11 上)husky@4lint-staged终端命令流程git add .git commit -m 'something'流程工作正常:Husky 的预提交挂钩和lint-staged命令已成功获取。然而,Github Desktop 预提交挂钩似乎没有表现。

我尝试查看该文件.git/hooks/pre-commit,它就在那里:

#!/bin/sh
# husky

# Created by Husky v4.3.8 (https://github.com/typicode/husky#readme)
#   At: 3/7/2021, 12:09:26 PM
#   From: /Users/admin/devProj/prject/node_modules/husky (https://github.com/typicode/husky#readme)

. "$(dirname "$0")/husky.sh"
Run Code Online (Sandbox Code Playgroud)

命令:

...
        "husky": "^4.3.8",
        "lint-staged": "^10.5.4",
...
"husky": {
        "hooks": {
            "pre-commit": "tsc --noEmit && lint-staged"
        }
    },
    "lint-staged": {
        "**/*.(js|jsx|ts|tsx)": [
            "npm run lint:fix",
            "prettier --write"
        ]
    }
Run Code Online (Sandbox Code Playgroud)

GitHub Desktop 找不到此内容的任何其他原因吗?

github-desktop husky lint-staged git-husky

9
推荐指数
1
解决办法
9698
查看次数

如何为 Vue 项目设置 lint-staged?

我使用 Vue CLI 创建了一个新的 Vue3 应用程序,并为我的 linter 配置选择了 Prettier。我想使用 commitlint、husky 和 ​​lint-staged 来验证提交消息并在推送代码之前检查代码。

\n

我做了什么

\n

基于https://commitlint.js.org/#/guides-local-setup我用 husky 设置了 commitlint

\n
npm install --save-dev @commitlint/{cli,config-conventional}\necho "module.exports = { extends: [\'@commitlint/config-conventional\'] };" > commitlint.config.js\n\nnpm install husky --save-dev\nnpx husky install\nnpx husky add .husky/commit-msg \'npx --no -- commitlint --edit $1\'\n
Run Code Online (Sandbox Code Playgroud)\n

基于https://github.com/okonet/lint-staged#installation-and-setup我设置了 lint-staged

\n
npx mrm@2 lint-staged\n
Run Code Online (Sandbox Code Playgroud)\n

在 package.json 中我替换

\n
"lint-staged": {\n  "*.js": "eslint --cache --fix"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

\n
"lint-staged": {\n  "*": "npm run lint"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

问题 …

javascript eslint vue.js prettier lint-staged

9
推荐指数
1
解决办法
6311
查看次数

与 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)

javascript configuration husky lint-staged

9
推荐指数
1
解决办法
3123
查看次数

如何使用lint-staged with jest --collectCoverageFrom

我正在使用lint-stagedJest测试框架来测试上次提交中已更改的文件,如本博客所述.

我的配置如下:

"src/**/*.{ts}": [
  "prettier --write",
  "tslint --fix --project .",
  "jest --bail --findRelatedTests",
  "git add"
]
Run Code Online (Sandbox Code Playgroud)

我还想为仅更改的文件生成coverage报告.为此,我必须将更改的文件列表放在多个位置.

jest --bail --findRelatedTests <spaceSeparatedListOfSourceFiles> --collectCoverageFrom=<glob>

使用lint-staged,如何仅针对已更改的文件限制测试和覆盖率报告?

javascript json typescript jestjs lint-staged

7
推荐指数
1
解决办法
1223
查看次数

如何在 lerna monorepo 中使用 lint-staged 在所有包中运行相同的命令?

我有以下根 package.json:

{
  "name": "project",
  "private": true,
  "workspaces": [
    "packages/*"
  ],
  "scripts": {
    "build": "lerna run build",
    "dev": "lerna run start --stream --parallel",
    "format": "yarn prettier --write",
    "prettier": "prettier --ignore-path .gitignore \"**/*.+(ts|tsx|json)\"",
    "test": "lerna run test --"
  },
  "husky": {
    "hooks": {
      "pre-commit": "yarn format && yarn test"
    }
  },
  "devDependencies": {
    "husky": "^4.2.5",
    "lerna": "^3.22.1",
    "prettier": "^2.0.5"
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,使用这个设置,当我仍在处理文件时,我无法提交,为了解决这个问题,我可以使用 lint-staged 模块,我的问题是,如何设置它以便我当前拥有的命令仍然运行,但仅在暂存文件上运行,而不在每个项目中安装该命令的所有依赖项?测试命令也可能是一个问题,因为它tsc --noEmit在每个项目中运行,我可以强制它只检查暂存文件吗?

tsc lerna monorepo lint-staged

7
推荐指数
1
解决办法
1万
查看次数

Prettier 格式化 json 文件

我有一个未格式化的json文件,它存储在我的应用程序中,结构如下

src
 /forms
   /test
     - abc.json
Run Code Online (Sandbox Code Playgroud)

我正在使用prettierhuskylint-staged在预提交时使用 prettier 和 linting。配置位于 my 中package.json,如下所示

  "husky": {
    "hooks": {
      "pre-commit": "lint-staged --relative",
      "pre-push": "tsc"
    }
  },
  "lint-staged": {
    "src/**/*.{ts, json}": [
      "prettier --write",
      "eslint --fix"
    ]
  },
  ....
  ..
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,abc.json当我将代码推送到 github 时,该文件永远不会被格式化。我缺少什么?

javascript typescript eslint lint-staged

7
推荐指数
1
解决办法
1万
查看次数

由于合并冲突,无法恢复未暂存的更改

当我执行git commit -m "commit message"命令时,lint-staged 显示此错误:

在此输入图像描述

我在 package.json 中的配置:

"husky": {
    "hooks": {
        "pre-commit": "npm run validate && lint-staged"
    }
},
"lint-staged": {
    "*.+(js|ts|tsx)": [
        "eslint"
    ],
    "**/*.+(js|json|ts|tsx)": [
        "prettier --write"
    ]
},
Run Code Online (Sandbox Code Playgroud)

它在mac上运行良好,但windows-10显示此错误。谁能告诉我windows出了什么问题?

git git-commit lint-staged git-husky

6
推荐指数
1
解决办法
4785
查看次数

如何为 lint-staged 提供多种模式?

例如,我在 .rb 和 .js 文件上匹配了它。

例如**/*.{js,rb}

例如,还想匹配GemfileRakefile

lint husky lint-staged

6
推荐指数
1
解决办法
2259
查看次数

npx mrm lint-staged 错误,“未找到预设“默认”。”

问题示例:

? npx mrm lint-staged
npx: installed 298 in 9.141s

Preset “default” not found.

We’ve tried to load “mrm-preset-default” and “default” npm packages.
Run Code Online (Sandbox Code Playgroud)

无法运行此命令,我不知道为什么!

prettier lint-staged npx

6
推荐指数
1
解决办法
940
查看次数

当提交由于 linting 错误而失败时,挂起的 git 更改会丢失(husky + lint-staged)

我有一个使用 git 和 Visual Studio Code 的 Angular 应用程序。我设置了 ESLint 并使用 husky 来运行lint-staged我设置了 ESLint 并使用 husky在预提交挂钩中

当我第一次设置它时,失败提交中的待处理更改就会消失,我了解到它们被隐藏了:https ://stackoverflow.com/a/60335168/11991371

我不明白为什么它会默认隐藏我的更改,而不是让我纠正 linting 错误并再次尝试提交。坦率地说,这似乎很奇怪。这会让每一个遇到它的开发人员感到恐慌。所以我添加了--no-stash标志,这样就不会这样做。

/.husky/预提交:

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

npx lint-staged --no-stash

Run Code Online (Sandbox Code Playgroud)

但现在我偶然发现了另一个问题案例。脚步:

  1. 对文件进行更改并意外留下 linting 错误。
  2. 暂存该文件。
  3. 在同一文件中进行另一次更改(但不要暂存它)。
  4. 尝试提交分阶段的更改。它将因 linting 错误而失败,并且第二次更改将丢失

如果您碰巧打开了该文件,您也许可以通过 IDE 中的“撤消”来恢复更改,但这是一个大问题。 如何防止因提交被拒绝而丢失工作,同时也不会自动隐藏工作?

git husky lint-staged git-husky

6
推荐指数
1
解决办法
1708
查看次数