javascript - 使用 git 创建美化 js 的自定义过滤器

标签 javascript git

我想在Git中设置自定义过滤器,以便自动美化js文件。我尝试创建一个运行 jshint 和 js-beautify 的预提交 Hook 。这是我创建的脚本:

#!/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 添加而失败(您正在暂存要提交的文件的一部分而不是整个文件)。

关于javascript - 使用 git 创建美化 js 的自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31241092/

相关文章:

git - 当 VSTS 中 CI 构建失败时如何从 git 恢复提交

javascript - 在JQuery中使用switch语句时如何将元素数据传递到case中?

javascript - Angular 2多步动画

git - TeamCity - 使 Git 子模块保持最新状态?

Python Popen + 通信只返回标准输出的第一行

git - 在Git中,如何列出分支A中存在但分支B中不存在的所有文件

windows - 我不小心将我的 git 编辑器设置为 Atom,如何将其恢复为 Git Bash?

javascript - 用vue过滤表格行

JavaScript - 我正在读取 json 文件并尝试读取某个键的值

Javascript - 自动下载资源