我目前正在尝试强制我或我的同事无法在我的角度应用程序中提交包含 console.log 的文件。
我目前已经有
husky
进行预提交,执行 ng lint --fix
。
有没有办法在我的 linting 中添加一些内容以防止控制台日志,或者在 husky 脚本中添加一些内容?
人们应该仍然能够使用 console.log,只是不提交它。
谢谢
您可以转到项目的
tslint.json
文件并确保此选项存在于您的文件中:
{
"rules": {
"no-console": true
}
}
如果您更喜欢不会“阻止”您而只是警告您的内容,您也可以按如下方式设置此选项:
{
"rules": {
"no-console": {
"severity": "warning",
}
}
}
最后,如果您想更精确地定位某些
console
函数,您可以这样指定它们:
{
"rules": {
"no-console": {
"severity": "warning",
"options": [
"log",
"error",
"debug",
"info",
"time",
"timeEnd",
"trace"
]
}
}
}
使用 husky,您可以将以下内容添加到您的
pre-commit
文件中:
# Get the current branch
current_branch=$(git rev-parse --abbrev-ref HEAD)
echo "Committing to $current_branch branch... running pre-commit check..."
# Check for console.log statements in the staged files
if git diff --cached --name-only | xargs grep -n 'console.log'; then
echo "console.log found. Aborting commit."
exit 1
else
echo "pre-commit check passed. Committing to $current_branch branch."
fi
这将检查分阶段更改中是否有任何“console.log”字符串,如果发现任何字符串,则阻止提交。
您还可以创建一个包含以下内容的
.gitignore
文件:
console.log
这样您的日志文件将被生成,但不会提交。
编辑
您无法使用 gitignore 按内容忽略文件。
相反,您可以使用 shell 脚本排除文件,如下所示:
for file in $(git grep -l --cached 'console.log') ; do
git rm --cached $file
done