From 526dc3ee63d308aef1ba2c75cd7a9cc4c9577a73 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Mon, 10 Jan 2022 01:43:23 +0100 Subject: build: Add pre-commit hook MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Run lint and tests on source files changes. Signed-off-by: Kristóf Marussy --- .nano-staged.json | 7 ++++++ .simple-git-hooks.json | 3 +++ README.md | 2 +- package.json | 9 +++++++- yarn.lock | 61 ++++++++++++++++++++++++++++++-------------------- 5 files changed, 56 insertions(+), 26 deletions(-) create mode 100644 .nano-staged.json create mode 100644 .simple-git-hooks.json diff --git a/.nano-staged.json b/.nano-staged.json new file mode 100644 index 0000000..2a8c905 --- /dev/null +++ b/.nano-staged.json @@ -0,0 +1,7 @@ +{ + "*.{cjs,js,jsx,ts,tsx}": [ + "yarn lint:precommit", + "yarn test --findRelatedTests" + ], + "*.json": "prettier --write" +} diff --git a/.simple-git-hooks.json b/.simple-git-hooks.json new file mode 100644 index 0000000..5f3b598 --- /dev/null +++ b/.simple-git-hooks.json @@ -0,0 +1,3 @@ +{ + "pre-commit": "yarn nano-staged" +} diff --git a/README.md b/README.md index 6c8b45a..757c53c 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ yarn typecheck To run the linter, run ```sh -yarn run lint +yarn lint ``` ## License diff --git a/package.json b/package.json index d8b27b1..062d358 100644 --- a/package.json +++ b/package.json @@ -28,14 +28,17 @@ "watch": "node scripts/watch.js", "watch:test": "yarn test --watch", "lint": "yarn types && yarn lint:only", - "lint:only": "cross-env NODE_OPTIONS=\"--max-old-space-size=16384\" eslint . --ext .cjs,.js,.jsx,.ts,.tsx", "lint:ci": "yarn lint:only --format gitlab", + "lint:only": "yarn lint:eslint . --ext .cjs,.js,.jsx,.ts,.tsx", + "lint:precommit": "yarn types && yarn lint:eslint --fix", + "lint:eslint": "cross-env NODE_OPTIONS=\"--max-old-space-size=16384\" eslint", "typecheck": "yarn types && yarn typecheck:ci", "typecheck:ci": "yarn workspaces foreach -vp run typecheck:workspace", "typecheck:workspace": "yarn g:typecheck", "g:typecheck": "cd $INIT_CWD && tsc", "types": "yarn workspaces foreach -vpt run types", "g:types": "cd $INIT_CWD && tsc -b tsconfig.build.json", + "postinstall": "is-ci || simple-git-hooks", "update-electron-vendors": "node scripts/updateElectronVendors.js", "main": "yarn workspace @sophie/main", "preload": "yarn workspace @sophie/preload", @@ -50,6 +53,7 @@ ], "devDependencies": { "@electron/fuses": "^1.5.0", + "@types/is-ci": "^3", "@types/jest": "^27.4.0", "@types/prettier": "^2", "@typescript-eslint/eslint-plugin": "^5.9.0", @@ -77,9 +81,12 @@ "eslint-plugin-security": "^1.4.0", "eslint-plugin-unicorn": "^40.0.0", "git-repo-info": "^2.1.1", + "is-ci": "^3.0.1", "jest": "^27.4.7", + "nano-staged": "^0.5.0", "prettier": "^2.5.1", "rimraf": "^3.0.2", + "simple-git-hooks": "^2.7.0", "typescript": "^4.5.4", "vite": "^2.7.10" }, diff --git a/yarn.lock b/yarn.lock index 290446e..09dff68 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1450,6 +1450,15 @@ __metadata: languageName: node linkType: hard +"@types/is-ci@npm:^3": + version: 3.0.0 + resolution: "@types/is-ci@npm:3.0.0" + dependencies: + ci-info: ^3.1.0 + checksum: 7c1f1f16c1fa2134de7400d82766c83fa76057261ba890628af77a09382ebb92d945bb077b98cfcf3d40ab1469c9ffbd2278112867edbe57aa655f53547eb139 + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" @@ -2661,7 +2670,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0, ci-info@npm:^3.3.0": +"ci-info@npm:^3.1.0, ci-info@npm:^3.2.0, ci-info@npm:^3.3.0": version: 3.3.0 resolution: "ci-info@npm:3.3.0" checksum: c3d86fe374938ecda5093b1ba39acb535d8309185ba3f23587747c6a057e63f45419b406d880304dbc0e1d72392c9a33e42fe9a1e299209bc0ded5efaa232b66 @@ -5321,7 +5330,7 @@ __metadata: languageName: node linkType: hard -"is-ci@npm:^3.0.0": +"is-ci@npm:^3.0.0, is-ci@npm:^3.0.1": version: 3.0.1 resolution: "is-ci@npm:3.0.1" dependencies: @@ -6824,6 +6833,17 @@ __metadata: languageName: node linkType: hard +"nano-staged@npm:^0.5.0": + version: 0.5.0 + resolution: "nano-staged@npm:0.5.0" + dependencies: + picocolors: ^1.0.0 + bin: + nano-staged: lib/bin.js + checksum: 452a73347ddc72226293536a00ce03c9335541f484c99c382506f2daf919ea476d22902887ff3fa315944983f245b8f8c6defe7a26b363d673b374ce032c2e44 + languageName: node + linkType: hard + "nanoid@npm:^3.1.30": version: 3.1.30 resolution: "nanoid@npm:3.1.30" @@ -7764,7 +7784,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0": +"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.20.0": version: 1.21.0 resolution: "resolve@npm:1.21.0" dependencies: @@ -7777,16 +7797,6 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.12.0, resolve@npm:^1.20.0": - version: 1.20.0 - resolution: "resolve@npm:1.20.0" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: 40cf70b2cde00ef57f99daf2dc63c6a56d6c14a1b7fc51735d06a6f0a3b97cb67b4fb7ef6c747b4e13a7baba83b0ef625d7c4ce92a483cd5af923c3b65fd16fe - languageName: node - linkType: hard - "resolve@npm:^2.0.0-next.3": version: 2.0.0-next.3 resolution: "resolve@npm:2.0.0-next.3" @@ -7797,7 +7807,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin": +"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin": version: 1.21.0 resolution: "resolve@patch:resolve@npm%3A1.21.0#~builtin::version=1.21.0&hash=07638b" dependencies: @@ -7810,16 +7820,6 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin": - version: 1.20.0 - resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=07638b" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: a0dd7d16a8e47af23afa9386df2dff10e3e0debb2c7299a42e581d9d9b04d7ad5d2c53f24f1e043f7b3c250cbdc71150063e53d0b6559683d37f790b7c8c3cd5 - languageName: node - linkType: hard - "resolve@patch:resolve@^2.0.0-next.3#~builtin": version: 2.0.0-next.3 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#~builtin::version=2.0.0-next.3&hash=07638b" @@ -8114,6 +8114,15 @@ __metadata: languageName: node linkType: hard +"simple-git-hooks@npm:^2.7.0": + version: 2.7.0 + resolution: "simple-git-hooks@npm:2.7.0" + bin: + simple-git-hooks: cli.js + checksum: e7d15ec4c20d2f6c85139fb9dee2cb25be684a27ff32931459fd2e5b1ed205ab89f31fd2e0fc53fc964c1a576d33cbcfbf69611f3d694f11851152f4bc415145 + languageName: node + linkType: hard + "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" @@ -8190,6 +8199,7 @@ __metadata: resolution: "sophie@workspace:." dependencies: "@electron/fuses": ^1.5.0 + "@types/is-ci": ^3 "@types/jest": ^27.4.0 "@types/prettier": ^2 "@typescript-eslint/eslint-plugin": ^5.9.0 @@ -8217,10 +8227,13 @@ __metadata: eslint-plugin-security: ^1.4.0 eslint-plugin-unicorn: ^40.0.0 git-repo-info: ^2.1.1 + is-ci: ^3.0.1 jest: ^27.4.7 + nano-staged: ^0.5.0 preload: ^0.1.0 prettier: ^2.5.1 rimraf: ^3.0.2 + simple-git-hooks: ^2.7.0 typescript: ^4.5.4 vite: ^2.7.10 languageName: unknown -- cgit v1.2.3-54-g00ecf