起初在做husky校验的时候,由于项目目录和.git目录不在同一层级,参考husky官网教程。
但是仍然存在项目文件夹名称改变了之后需要改配置、安装过程不方便的问题。 于是简单修改了初始化方式,使用node获取当前目录,进行自动配置。
package.json
"scripts": {
"prepare": "node .husky.install.ts"
}
.husky.install.ts
const { resolve } = require("path");
const filePath = __dirname.split("\\");
const lastDriName = filePath[filePath.length - 1];
const { execSync } = require("child_process");
const fs = require("fs");
// install husky
execSync(`cd .. && husky install ${lastDriName}/.husky`);
// 自定义钩子 防止多次初始化
const data = fs.readFileSync(".husky/pre-commit", "utf8");
data.search("lint-staged") == -1 &&
execSync(
`npx husky add .husky/pre-commit "cd ${lastDriName} && yarn lint-staged"`
);
// 注册到git中
execSync(`cd .. && git add ${lastDriName}/.husky/pre-commit`);
2022-05-05修正文件不存在导致的报错、不强制依赖yarn
const { resolve } = require("path");
const filePath = __dirname.split("\\");
const lastDriName = filePath[filePath.length - 1];
const { execSync } = require("child_process");
const { readFile } = require("fs");
execSync(`cd .. && husky install ${lastDriName}/.husky`);
readFile(".husky/pre-commit", "utf8", (err, res) => {
if (err || res.search("lint-staged") == -1) {
execSync(
`npx husky add .husky/pre-commit "cd ${lastDriName} && npx lint-staged"`
);
}
execSync(`cd .. && git add ${lastDriName}/.husky/pre-commit`);
});
欢迎各路大神指正:仓库链接