通过pre-commit钩子运行eslint,在git提交代码前强制校验代码

作为开发人员,总少不了合作开发项目,每个人的习惯不同,风格不同,若不规范,最终导致代码五花八门,对后期维护人员来说痛苦不堪。若通过约定来进行代码规范,实现起来有点儿困难,于是,通过工具来进行约束显得尤为重要。


通过查阅资料了解到可以通过node的pre-commit模块在提交代码前来运行npm script。在npm script配置lint命令,然后配置到pre-commit模块中,代码提交前若校验不通过,则阻断提交。


安装pre-commit eslint babel-eslint

npm install pre-commit eslint babel-eslint --save-dev



package.json中配置npm script

"scripts": {
    "lint": "./node_modules/.bin/eslint ./src",
    "lintfix": "./node_modules/.bin/eslint ./src --fix"
}


package.json配置pre-commit

"pre-commit": [
    "lint"
]


根目录添加eslint配置文件,.eslintrc.js , 当然也可以通过eslint --init 来按照提示自动生成配置文件 以下eslint配置仅供参考

module.exports = {
    "env": {
        "browser": true,
        "commonjs": true,
        "es6": true,
        "node": true
    },
    "parser": "babel-eslint",
    "extends": "eslint:recommended",
    "parserOptions": {
        "sourceType": "module"
    },
    "rules": {
        "indent": [
            "error",
            4,
            {
                "SwitchCase": 1
            }
        ],
        "linebreak-style": [
            "error",
            "unix"
        ],
        "quotes": [
            "error",
            "single"
        ],
        "semi": [
            "error",
            "always"
        ],
        "keyword-spacing": [
            2,
            {
                "before": true,
                "after": true
            }
        ],
        "eqeqeq": 2
    },
    "globals": {
        //全局变量
    }
}


配置eslint忽略文件.eslintignore

node_modules
// so on


其他eslint校验忽略方式

1、/* eslint-disable */
2、/* eslint-disable no-alert, no-console */
3、// eslint-disable-line
4、// eslint-disable-next-line



更多请参考 eslint

确认 取消
1条评论