eslint在git上预调试
eslint pre-commiot on git
如何在添加阶段的文件上运行预提交脚本esint?
我在hooks文件夹中有.eslintrc文件。
我还有脚本:
#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments. The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".
function lintit () {
a=("${(f)$(git diff --name-only | grep -E '(.js)$')}")
e=$(eslint -c eslint.json $a)
echo $e
if [[ "$e" != *"0 problems"* ]]; then
echo "ERROR: Check eslint hints."
exit 1 # reject
fi
}
lintit
但它并没有完成我在.eslinc文件中的eslint。
谢谢!
我看到您的脚本有两个(可能的)问题:
- 文件可能没有设置可执行标志
- 您的子shell表达式错误
除非在unixoid系统上有适当的可执行标志,否则Git不会执行。
$ chmod ug+x .git/hooks/pre-commit
如果您还没有看到任何错误消息,则可能是由于此原因。
但是,这是不正确的,这是一个语法错误:
a=("${(f)$(git diff --name-only | grep -E '(.js)$')}")
e=$(eslint -c eslint.json $a)
更好:
a="$( git diff --name-only | grep -E '(.js)$' )"
e=$( eslint -c eslint.json $a )
进一步改进
简化结果检查
如果发现错误,esint将以负(非零)退出代码退出。
eslint ${ESLINT_CONF} $( ... )
if [ $? -ne 0 ]; then
echo "eslint is unhappy."
exit 1
fi
如果不需要echo
,那么在最后一行有eslint
语句就足够了,因此shell将使用该命令的退出代码退出。
但是,使用退出代码的缺点是,由于esint确实在警告时使用正代码(零)退出,因此您将无法检测到警告。在这种情况下,您仍然需要匹配警告。
不仅检查已修改的文件
您的git diff
表达式找不到新文件。您可能需要使用git status
:
git status --porcelain | awk '{print $2}' | grep -E '(.js)$'
最终脚本
#!/bin/sh
ESLINT_CONF=".eslintrc.json"
eslint ${ESLINT_CONF} $( git status --porcelain | awk '{print $2}' | grep -E '(.js)$' ) >/dev/null
if [ $? -ne 0 ]; then
echo "ERROR: Check eslint hints."
exit 1
fi
exit 0
或者,简化。。。
#!/bin/sh
ESLINT_CONF=".eslintrc.json"
eslint ${ESLINT_CONF} $( git status --porcelain | awk '{print $2}' | grep -E '(.js)$' ) >/dev/null
或者,通过检查警告。。。
#!/bin/sh
ESLINT_CONF=".eslintrc.json"
RES="( eslint ${ESLINT_CONF} $( git status --porcelain | awk '{print $2}' | grep -E '(.js)$' ) )"
if [ $? -ne 0 ] || [[ "${RES}" != *"0 warning"* ]]; then
echo "ERROR: Check eslint hints."
exit 1
fi
删除>/dev/null
(脚本1和2)或echo "${RES}"
(脚本3)以显示esint的输出。
相关文章:
- 如何在vs2002中调试html页面
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 如何在visualstudio中调试web api时编辑javascript文件
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 注意:wp_enqueue_script调用不正确.在 Wordpress 调试模式下
- 如何调试Javascript代码或函数
- 基于Web的JS调试库
- 调试此代码?警报不起作用
- 如何在 JavaScript 代码中调试点击事件处理
- 调试一个简单的jQuery函数;想知道是否与其他代码冲突
- 使用Browserify和Typescript的源映射进行Webstorm调试
- VS2010 javascript调试器希望在VS2010的新实例中启动
- 如何在调试模式停止后查看Visual Studio 2015 Javascript控制台
- 仅在页面加载时调试Jquery
- 将服务器js文件替换为本地js进行调试
- 广告块加调试,undersanding代码库
- 变量在运行时未定义,但在使用调试器时定义
- 调试器;[错误]194:11:标识符是一个保留字
- 无法在IE、Firefox中使用adobeacrobat9pro调试PDF中的javascript
- eslint在git上预调试