代码美化工程化

23 阅读1分钟

参考prettier官网

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();