prettier . --write
如果我们想指定格式化当前变更的文件而不是所有,可以获取当前变化文件,指定美化的文件
prettier path/to/file.js --write
所以完整工程化如下
1. .husky/pre-commit
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
current_branch=`git rev-parse --abbrev-ref HEAD`
if [[ $current_branch != 'master' && $current_branch != 'release' ]]; then
# prettier code
npm run prettier -- commit
fi
// package.json
"scripts": {
"prettier": "node ./build/husky/prettier.js",
}
在git提交钩子函数中触发执行脚本
2. 获取变更文件,执行prettier美化命令
./build/husky/prettier.js
function getChangedFile() {
// 略 参考上两篇文章
}
const init = async () => {
const op = process.argv[2];
const branch = getCurrentBranch();
if (branch === 'release' || branch === 'master') return;
const files = getChangedFile();
const addFiles = files.join(' ');
// 格式化处理
files?.forEach((file) => {
execSync(`prettier --write "${file}"`);
});
// commit 提交时,自动添加到变更列表中
if (op === 'commit') {
execSync(`git add ${addFiles}`);
}
};
init();