我其實.. 也不知道當初為什麼要用英文寫,而且寫得蠻爛的,但我自己看得懂啦,應該是早上上班寫 code 很急,我也不想花太多時間整理了...If we can't control other developers, but we can control some commit rule for other developer. that's why i want to use
pre-commit, it can help to check other developer code convention.By Using gulp-eslint and pre-commit.
Because my project is fully frontend project. so... i use gulp-eslint replace with eslint.
Step summary:
1. install gulp-eslint
2. install pre-commit
3. create you eslint config file, there are serveral format for eslint config file, you can go here.
I assume that you are already have gulp. so just install
gulp-eslint and pre-commit by npm install.by using --save or --save-dev depend on you...
npm install gulp gulp-eslint --save
npm install pre-commit --save-dev
create your
.eslintrc.js in app folder root: (just example, you can add your eslintrc rule for you team)
module.exports = {
"env": {
"browser": true
},
"extends": "eslint:recommended",
"rules": {
"comma-dangle": [ 2, "never" ],
"brace-style": [ 2, "1tbs" ],
"camelcase": [ 2, { "properties": "never" } ],
"comma-spacing": [ 2, {"before": false, "after": true} ],
"comma-style": [ 2, "last" ],
"consistent-this": [ 2, "self" ],
"eol-last": 2,
"func-names": 0,
"func-style": 0,
"indent": ["error", 2],
"linebreak-style": [ 2, "unix" ],
"max-nested-callbacks": [ 2, 3 ],
"max-len": [ 1, 120, 4 ],
"max-params": ["error", 9]
}
};
example of my gulpfile.js
// remember to require your gulp-eslint var gulp = require('gulp'), eslint = require('gulp-eslint'); // bla~ bla~ bla~ // register and lint task for gulp-eslint gulp.task('lint', function() { // ESLint ignores files with "node_modules" paths. // Lint for my js source folder: // app/**/*.js (#### replace by your folder! ####) return gulp.src(['app/**/*.js','!node_modules/**']) .pipe(eslint()) .pipe(eslint.format()) // To have the process exit with an error code (1) on // lint error, return the stream and pipe to failAfterError last. .pipe(eslint.failAfterError()); });
So, when i setup my gulpfile.js, and register an task by name:
lint (gulp.task('lint', ....),now i can run lint by gulp lint。$ gulp lint
and add our
gulp lint commend to pre-commit hook. open package.json file, add an new script name "lint" and run gulp lint && exit 0,(aka you can run lint by npm run lint),and append pre-commit setting "pre-commit": [
"lint", "precommit-msg"
],, done!example of my package.json
{
"name": "pj",
"version": "0.0.0",
"private": true,
"scripts": {
"precommit-msg": "echo '開始進行 Pre-commit checks...' && exit 0",
"lint": "gulp lint && exit 0"
},
"precommit.silent": true,
"pre-commit": [
"lint", "precommit-msg"
],
"dependencies": {
"gulp": "^3.9.1",
"gulp-eslint": "^3.0.1",
},
"devDependencies": {
"pre-commit": "^1.1.3"
}
}
To try if pre-commit for lint is work, add some file to app folder (like: app/xx.js), and write some js code in that file, remember to commit, will run eslint automatically.
Some Question:
before i add
"precommit.silent": true, to package.json, and run my lint, will present these message after linted.[10:43:45] 'lint' errored after 1.51 s
[10:43:45] ESLintError in plugin 'gulp-eslint'
Message:
Failed with 301 errors
pre-commit:
pre-commit: We've failed to pass the specified git pre-commit hooks as the lint
pre-commit: hook returned an exit code (1). If you're feeling adventurous you can
pre-commit: skip the git pre-commit hooks by adding the following flags to your commit:
pre-commit:
pre-commit: git commit -n (or --no-verify)
pre-commit:
pre-commit: This is ill-advised since the commit is broken.
pre-commit:
In order to avoid these message, so i add
"precommit.silent": true, to package.json.some description from https://github.com/observing/pre-commit:
silent: Don't output the prefixed pre-commit: messages when things fail or when we have nothing to run. Should be a boolean.
that is why i add
"precommit.silent": true to package.json. XD
沒有留言:
張貼留言
若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD