Closed NARUTOyuyang closed 1 year ago
TAutomatically replying with ChatGPT can be attempted, but it cannot be guaranteed to be completely accurate and may not fully address all issues. Please feel free to reply if you have any further questions or concerns. 此回复基于 ChatGPT 自动生成,可以尝试下方案,官方人员会在一定时间后继续继续处理。
这个问题可能与lint-staged
配置有关,需要将lint-staged
配置文件中的 TypeScript 校验部分合并到husky
钩子中。以下是可能的解决方案。
首先,需要安装 TypeScript 的相关依赖:
npm install -D typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser
其次,需要在项目根目录下创建 .eslintrc.js
文件:
module.exports = {
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier/@typescript-eslint"
],
rules: {
"@typescript-eslint/explicit-module-boundary-types": 0
}
};
然后,在 package.json 中添加以下的配置:
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"**/*.ts": [
"eslint --ext .ts"
]
},
结尾注意事项:需要将 .eslintignore
文件删除或对其中的文件进行修改,以便对 TypeScript 文件进行校验。
最后的配置应该可以在提交前对 TS 进行校验,如果有错误则拒绝提交并输出错误。
参考文档:
pre-commit 不会触发 tsc,你可以按照上面的步骤增加一下 tsc 。
我们 tsc 是用 build ci 来拦住的
pre-commit 不会触发 tsc,你可以按照上面的步骤增加一下 tsc 。
我们 tsc 是用 build ci 来拦住的
这是我的 tsconfig.json 文件,在代码编辑过程中是会校验的,但是 pre-commit 却没有生效
{
"compilerOptions": {
"outDir": "build/dist",
"module": "esnext",
"target": "esnext",
"lib": ["esnext", "dom"],
"sourceMap": true,
"baseUrl": ".",
"jsx": "react-jsx",
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"allowJs": true,
"skipLibCheck": true,
"experimentalDecorators": true,
"strict": true,
"paths": {
"@/*": ["./src/*"],
"@@/*": ["./src/.umi/*"]
}
},
"include": [
"mock/**/*",
"src/**/*",
"playwright.config.ts",
"tests/**/*",
"test/**/*",
"__test__/**/*",
"typings/**/*",
"config/**/*",
".eslintrc.js",
".stylelintrc.js",
".prettierrc.js",
"jest.config.js",
"mock/*"
],
"exclude": ["node_modules", "build", "dist", "scripts", "src/.umi/*", "webpack", "jest"]
}
.eslintrc.js
module.exports = {
extends: [require.resolve('@umijs/fabric/dist/eslint')],
globals: {
ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: true,
page: true,
REACT_APP_ENV: true,
},
rules: {
'@typescript-eslint/no-unused-vars': ['error'],
'react/self-closing-comp': ['error'],
},
};
.package.json
"lint-staged": {
"**/*.less": "stylelint --syntax less",
"**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js",
"**/*.{js,jsx,tsx,ts,less,md,json}": [
"prettier --write"
]
},
pre-commit 不会触发 tsc,你可以按照上面的步骤增加一下 tsc 。
我们 tsc 是用 build ci 来拦住的
根据你给的配置不生效,本地编辑器会根据 tsconfig.json 生效,但是 pro-commit 还是不会生效
🧐 问题描述 | Problem description
TS 语法有 error 提示,但是 pre-commit 提交的时候没有对 TS 语法进行异常提示,希望对 TS 没有标注类型的错误提示,能在 pre-commit 中也能出现 error 提示
💻 示例代码 | Sample code
🚑 其他信息 | Other information
OS:
Node:
浏览器 | browser: