Javascript 使用git为美化js创建自定义过滤器
我想在Git中设置一个自定义过滤器,这样js文件就会自动美化。我尝试创建一个预提交钩子,它运行jshint和js beautify。这是我创建的脚本:Javascript 使用git为美化js创建自定义过滤器,javascript,git,Javascript,Git,我想在Git中设置一个自定义过滤器,这样js文件就会自动美化。我尝试创建一个预提交钩子,它运行jshint和js beautify。这是我创建的脚本: #!/bin/sh files=$(git diff --cached --name-only --diff-filter=ACM | grep ".js$") if [ "$files" = "" ]; then exit 0 fi pass=true echo "Javascript validation with JSHi
#!/bin/sh
files=$(git diff --cached --name-only --diff-filter=ACM | grep ".js$")
if [ "$files" = "" ]; then
exit 0
fi
pass=true
echo "Javascript validation with JSHint:"
for file in ${files}; do
result=$(jshint ${file} | egrep "error")
if [ "$result" != "" ]; then
echo "JSHint error: ${file}"
echo "$(jshint ${file})"
pass=false
else
echo "JSHint ok: ${file}"
beautify=$(js-beautify ${file} -r -P --config .beautifyrc)
fi
done
echo "Validation complete"
if ! $pass; then
echo "Aborting commit."
exit 1
else
echo "Commit ok."
exit 0
fi
通过这种方式,文件被提交,但js beautify所做的更改不包括在提交中,并且文件更改处于挂起状态(因此我需要进行第二次提交)。我一直在读关于设置过滤器的书,但我不知道如何运行自定义shell脚本。我想设置这个过滤器:
*.js js-beautify ${file} -r -P --config .beautifyrc
非常感谢,致以最诚挚的问候。您需要对所更改的文件运行
git add
,以便对其进行记录。您修改的文件仅在工作副本中更改;它们不会在索引上更改,这是Git在创建提交时使用的
请注意,这种方法在部分git添加时失败(在这里,要提交的是文件的一部分,而不是整个文件) 若要添加到上面,请使用任务运行程序(如Grunt或Gulp),并在提交之前手动运行美化器。我还建议您研究ESLint。感谢AlBlue,它似乎是一个有效的解决方案。zamber,此解决方案是自动的,一旦配置,我的团队中没有人必须运行beautify。我会这样做,但我希望解决方案更简单。