gpt4 book ai didi

node.js - Husky 预提交 Hook 在提交后完成

转载 作者:行者123 更新时间:2023-12-05 02:51:03 25 4
gpt4 key购买 nike

编写以下脚本是为了在预提交 Hook 上按键对 JSON 文件进行排序:

 /*
* Will reorder all files in given path.
*/

const sortJson = require("sort-json");
const fs = require("fs");
const chalk = require("chalk");

const log = console.log;
const translationsPath = process.argv.slice(2).join(" ");

function readFiles(dirname) {
try {
return fs.readdirSync(dirname);
} catch (e) {
log(chalk.red(`Failed reading files from path; ${e}`));
}
}

log(
chalk.bgGreen(
`Running json sort pre-commit hook on path: ${translationsPath}`
)
);

const files = readFiles(translationsPath);
files.forEach((file) => {
log(chalk.yellow(`Sorting ${file}...`));
try {
sortJson.overwrite(`${translationsPath}\\${file}`);
log(chalk.green(`Finished sorting ${file}`));
} catch (e) {
log(chalk.red(`Failed sorting file ${file}; ${e}`));
}
});

log(
chalk.bgGreen(
`Finished sorting files`
)
);

我使用 husky 预提交 Hook 将脚本附加到我的 package.json:

  "scripts": {
"sort-translations": "node ./scripts/husky/json-sort src/assets/translations",
...
},
"husky": {
"hooks": {
"pre-commit": "npm run sort-translations"
}
},

结果是提交完成,然后脚本才完成创建的未暂存更改。脚本本身与最后打印的 Finished sorting files 消息同步运行。

我的问题是,如何让它同步;首先完成运行 node ./scripts/husky/json-sort src/assets/translations,然后 git commit

谢谢!

最佳答案

感谢@adelriosantiago 的评论,我明白了。

  1. 首先,我开始使用 readdirSync() 而不是 readdir()。然后我能够(通过日志记录)验证脚本确实仅在文件被编辑时结束。不幸的是,这还不够—— Hook 仍然以未提交的文件结束。
  2. 在这一点上我意识到 - 这不是关于钩子(Hook),而是关于 git 暂存!脚本按时结束,但修改后的更改仍未暂存,因此未提交。所以我添加了 && git add src/assets/translationspre-commit 钩子(Hook)。

现在一切正常。

关于node.js - Husky 预提交 Hook 在提交后完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63438945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com