Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用git为美化js创建自定义过滤器_Javascript_Git - Fatal编程技术网

Javascript 使用git为美化js创建自定义过滤器

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

我想在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 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。我会这样做,但我希望解决方案更简单。