diff options
author | Kristóf Marussy <kristof@marussy.com> | 2022-01-10 01:43:23 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2022-01-10 11:09:08 +0100 |
commit | 526dc3ee63d308aef1ba2c75cd7a9cc4c9577a73 (patch) | |
tree | bb0f3c7365b90b007e48b9b9f209aec08138ada5 | |
parent | build: Add eslint-plugin-security (diff) | |
download | sophie-526dc3ee63d308aef1ba2c75cd7a9cc4c9577a73.tar.gz sophie-526dc3ee63d308aef1ba2c75cd7a9cc4c9577a73.tar.zst sophie-526dc3ee63d308aef1ba2c75cd7a9cc4c9577a73.zip |
build: Add pre-commit hook
Run lint and tests on source files changes.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
-rw-r--r-- | .nano-staged.json | 7 | ||||
-rw-r--r-- | .simple-git-hooks.json | 3 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | package.json | 9 | ||||
-rw-r--r-- | yarn.lock | 61 |
5 files changed, 56 insertions, 26 deletions
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 @@ | |||
1 | { | ||
2 | "*.{cjs,js,jsx,ts,tsx}": [ | ||
3 | "yarn lint:precommit", | ||
4 | "yarn test --findRelatedTests" | ||
5 | ], | ||
6 | "*.json": "prettier --write" | ||
7 | } | ||
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 @@ | |||
1 | { | ||
2 | "pre-commit": "yarn nano-staged" | ||
3 | } | ||
@@ -64,7 +64,7 @@ yarn typecheck | |||
64 | To run the linter, run | 64 | To run the linter, run |
65 | 65 | ||
66 | ```sh | 66 | ```sh |
67 | yarn run lint | 67 | yarn lint |
68 | ``` | 68 | ``` |
69 | 69 | ||
70 | ## License | 70 | ## License |
diff --git a/package.json b/package.json index d8b27b1..062d358 100644 --- a/package.json +++ b/package.json | |||
@@ -28,14 +28,17 @@ | |||
28 | "watch": "node scripts/watch.js", | 28 | "watch": "node scripts/watch.js", |
29 | "watch:test": "yarn test --watch", | 29 | "watch:test": "yarn test --watch", |
30 | "lint": "yarn types && yarn lint:only", | 30 | "lint": "yarn types && yarn lint:only", |
31 | "lint:only": "cross-env NODE_OPTIONS=\"--max-old-space-size=16384\" eslint . --ext .cjs,.js,.jsx,.ts,.tsx", | ||
32 | "lint:ci": "yarn lint:only --format gitlab", | 31 | "lint:ci": "yarn lint:only --format gitlab", |
32 | "lint:only": "yarn lint:eslint . --ext .cjs,.js,.jsx,.ts,.tsx", | ||
33 | "lint:precommit": "yarn types && yarn lint:eslint --fix", | ||
34 | "lint:eslint": "cross-env NODE_OPTIONS=\"--max-old-space-size=16384\" eslint", | ||
33 | "typecheck": "yarn types && yarn typecheck:ci", | 35 | "typecheck": "yarn types && yarn typecheck:ci", |
34 | "typecheck:ci": "yarn workspaces foreach -vp run typecheck:workspace", | 36 | "typecheck:ci": "yarn workspaces foreach -vp run typecheck:workspace", |
35 | "typecheck:workspace": "yarn g:typecheck", | 37 | "typecheck:workspace": "yarn g:typecheck", |
36 | "g:typecheck": "cd $INIT_CWD && tsc", | 38 | "g:typecheck": "cd $INIT_CWD && tsc", |
37 | "types": "yarn workspaces foreach -vpt run types", | 39 | "types": "yarn workspaces foreach -vpt run types", |
38 | "g:types": "cd $INIT_CWD && tsc -b tsconfig.build.json", | 40 | "g:types": "cd $INIT_CWD && tsc -b tsconfig.build.json", |
41 | "postinstall": "is-ci || simple-git-hooks", | ||
39 | "update-electron-vendors": "node scripts/updateElectronVendors.js", | 42 | "update-electron-vendors": "node scripts/updateElectronVendors.js", |
40 | "main": "yarn workspace @sophie/main", | 43 | "main": "yarn workspace @sophie/main", |
41 | "preload": "yarn workspace @sophie/preload", | 44 | "preload": "yarn workspace @sophie/preload", |
@@ -50,6 +53,7 @@ | |||
50 | ], | 53 | ], |
51 | "devDependencies": { | 54 | "devDependencies": { |
52 | "@electron/fuses": "^1.5.0", | 55 | "@electron/fuses": "^1.5.0", |
56 | "@types/is-ci": "^3", | ||
53 | "@types/jest": "^27.4.0", | 57 | "@types/jest": "^27.4.0", |
54 | "@types/prettier": "^2", | 58 | "@types/prettier": "^2", |
55 | "@typescript-eslint/eslint-plugin": "^5.9.0", | 59 | "@typescript-eslint/eslint-plugin": "^5.9.0", |
@@ -77,9 +81,12 @@ | |||
77 | "eslint-plugin-security": "^1.4.0", | 81 | "eslint-plugin-security": "^1.4.0", |
78 | "eslint-plugin-unicorn": "^40.0.0", | 82 | "eslint-plugin-unicorn": "^40.0.0", |
79 | "git-repo-info": "^2.1.1", | 83 | "git-repo-info": "^2.1.1", |
84 | "is-ci": "^3.0.1", | ||
80 | "jest": "^27.4.7", | 85 | "jest": "^27.4.7", |
86 | "nano-staged": "^0.5.0", | ||
81 | "prettier": "^2.5.1", | 87 | "prettier": "^2.5.1", |
82 | "rimraf": "^3.0.2", | 88 | "rimraf": "^3.0.2", |
89 | "simple-git-hooks": "^2.7.0", | ||
83 | "typescript": "^4.5.4", | 90 | "typescript": "^4.5.4", |
84 | "vite": "^2.7.10" | 91 | "vite": "^2.7.10" |
85 | }, | 92 | }, |
@@ -1450,6 +1450,15 @@ __metadata: | |||
1450 | languageName: node | 1450 | languageName: node |
1451 | linkType: hard | 1451 | linkType: hard |
1452 | 1452 | ||
1453 | "@types/is-ci@npm:^3": | ||
1454 | version: 3.0.0 | ||
1455 | resolution: "@types/is-ci@npm:3.0.0" | ||
1456 | dependencies: | ||
1457 | ci-info: ^3.1.0 | ||
1458 | checksum: 7c1f1f16c1fa2134de7400d82766c83fa76057261ba890628af77a09382ebb92d945bb077b98cfcf3d40ab1469c9ffbd2278112867edbe57aa655f53547eb139 | ||
1459 | languageName: node | ||
1460 | linkType: hard | ||
1461 | |||
1453 | "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": | 1462 | "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": |
1454 | version: 2.0.4 | 1463 | version: 2.0.4 |
1455 | resolution: "@types/istanbul-lib-coverage@npm:2.0.4" | 1464 | resolution: "@types/istanbul-lib-coverage@npm:2.0.4" |
@@ -2661,7 +2670,7 @@ __metadata: | |||
2661 | languageName: node | 2670 | languageName: node |
2662 | linkType: hard | 2671 | linkType: hard |
2663 | 2672 | ||
2664 | "ci-info@npm:^3.2.0, ci-info@npm:^3.3.0": | 2673 | "ci-info@npm:^3.1.0, ci-info@npm:^3.2.0, ci-info@npm:^3.3.0": |
2665 | version: 3.3.0 | 2674 | version: 3.3.0 |
2666 | resolution: "ci-info@npm:3.3.0" | 2675 | resolution: "ci-info@npm:3.3.0" |
2667 | checksum: c3d86fe374938ecda5093b1ba39acb535d8309185ba3f23587747c6a057e63f45419b406d880304dbc0e1d72392c9a33e42fe9a1e299209bc0ded5efaa232b66 | 2676 | checksum: c3d86fe374938ecda5093b1ba39acb535d8309185ba3f23587747c6a057e63f45419b406d880304dbc0e1d72392c9a33e42fe9a1e299209bc0ded5efaa232b66 |
@@ -5321,7 +5330,7 @@ __metadata: | |||
5321 | languageName: node | 5330 | languageName: node |
5322 | linkType: hard | 5331 | linkType: hard |
5323 | 5332 | ||
5324 | "is-ci@npm:^3.0.0": | 5333 | "is-ci@npm:^3.0.0, is-ci@npm:^3.0.1": |
5325 | version: 3.0.1 | 5334 | version: 3.0.1 |
5326 | resolution: "is-ci@npm:3.0.1" | 5335 | resolution: "is-ci@npm:3.0.1" |
5327 | dependencies: | 5336 | dependencies: |
@@ -6824,6 +6833,17 @@ __metadata: | |||
6824 | languageName: node | 6833 | languageName: node |
6825 | linkType: hard | 6834 | linkType: hard |
6826 | 6835 | ||
6836 | "nano-staged@npm:^0.5.0": | ||
6837 | version: 0.5.0 | ||
6838 | resolution: "nano-staged@npm:0.5.0" | ||
6839 | dependencies: | ||
6840 | picocolors: ^1.0.0 | ||
6841 | bin: | ||
6842 | nano-staged: lib/bin.js | ||
6843 | checksum: 452a73347ddc72226293536a00ce03c9335541f484c99c382506f2daf919ea476d22902887ff3fa315944983f245b8f8c6defe7a26b363d673b374ce032c2e44 | ||
6844 | languageName: node | ||
6845 | linkType: hard | ||
6846 | |||
6827 | "nanoid@npm:^3.1.30": | 6847 | "nanoid@npm:^3.1.30": |
6828 | version: 3.1.30 | 6848 | version: 3.1.30 |
6829 | resolution: "nanoid@npm:3.1.30" | 6849 | resolution: "nanoid@npm:3.1.30" |
@@ -7764,7 +7784,7 @@ __metadata: | |||
7764 | languageName: node | 7784 | languageName: node |
7765 | linkType: hard | 7785 | linkType: hard |
7766 | 7786 | ||
7767 | "resolve@npm:^1.10.0": | 7787 | "resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.20.0": |
7768 | version: 1.21.0 | 7788 | version: 1.21.0 |
7769 | resolution: "resolve@npm:1.21.0" | 7789 | resolution: "resolve@npm:1.21.0" |
7770 | dependencies: | 7790 | dependencies: |
@@ -7777,16 +7797,6 @@ __metadata: | |||
7777 | languageName: node | 7797 | languageName: node |
7778 | linkType: hard | 7798 | linkType: hard |
7779 | 7799 | ||
7780 | "resolve@npm:^1.12.0, resolve@npm:^1.20.0": | ||
7781 | version: 1.20.0 | ||
7782 | resolution: "resolve@npm:1.20.0" | ||
7783 | dependencies: | ||
7784 | is-core-module: ^2.2.0 | ||
7785 | path-parse: ^1.0.6 | ||
7786 | checksum: 40cf70b2cde00ef57f99daf2dc63c6a56d6c14a1b7fc51735d06a6f0a3b97cb67b4fb7ef6c747b4e13a7baba83b0ef625d7c4ce92a483cd5af923c3b65fd16fe | ||
7787 | languageName: node | ||
7788 | linkType: hard | ||
7789 | |||
7790 | "resolve@npm:^2.0.0-next.3": | 7800 | "resolve@npm:^2.0.0-next.3": |
7791 | version: 2.0.0-next.3 | 7801 | version: 2.0.0-next.3 |
7792 | resolution: "resolve@npm:2.0.0-next.3" | 7802 | resolution: "resolve@npm:2.0.0-next.3" |
@@ -7797,7 +7807,7 @@ __metadata: | |||
7797 | languageName: node | 7807 | languageName: node |
7798 | linkType: hard | 7808 | linkType: hard |
7799 | 7809 | ||
7800 | "resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>": | 7810 | "resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>": |
7801 | version: 1.21.0 | 7811 | version: 1.21.0 |
7802 | resolution: "resolve@patch:resolve@npm%3A1.21.0#~builtin<compat/resolve>::version=1.21.0&hash=07638b" | 7812 | resolution: "resolve@patch:resolve@npm%3A1.21.0#~builtin<compat/resolve>::version=1.21.0&hash=07638b" |
7803 | dependencies: | 7813 | dependencies: |
@@ -7810,16 +7820,6 @@ __metadata: | |||
7810 | languageName: node | 7820 | languageName: node |
7811 | linkType: hard | 7821 | linkType: hard |
7812 | 7822 | ||
7813 | "resolve@patch:resolve@^1.12.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>": | ||
7814 | version: 1.20.0 | ||
7815 | resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin<compat/resolve>::version=1.20.0&hash=07638b" | ||
7816 | dependencies: | ||
7817 | is-core-module: ^2.2.0 | ||
7818 | path-parse: ^1.0.6 | ||
7819 | checksum: a0dd7d16a8e47af23afa9386df2dff10e3e0debb2c7299a42e581d9d9b04d7ad5d2c53f24f1e043f7b3c250cbdc71150063e53d0b6559683d37f790b7c8c3cd5 | ||
7820 | languageName: node | ||
7821 | linkType: hard | ||
7822 | |||
7823 | "resolve@patch:resolve@^2.0.0-next.3#~builtin<compat/resolve>": | 7823 | "resolve@patch:resolve@^2.0.0-next.3#~builtin<compat/resolve>": |
7824 | version: 2.0.0-next.3 | 7824 | version: 2.0.0-next.3 |
7825 | resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#~builtin<compat/resolve>::version=2.0.0-next.3&hash=07638b" | 7825 | resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#~builtin<compat/resolve>::version=2.0.0-next.3&hash=07638b" |
@@ -8114,6 +8114,15 @@ __metadata: | |||
8114 | languageName: node | 8114 | languageName: node |
8115 | linkType: hard | 8115 | linkType: hard |
8116 | 8116 | ||
8117 | "simple-git-hooks@npm:^2.7.0": | ||
8118 | version: 2.7.0 | ||
8119 | resolution: "simple-git-hooks@npm:2.7.0" | ||
8120 | bin: | ||
8121 | simple-git-hooks: cli.js | ||
8122 | checksum: e7d15ec4c20d2f6c85139fb9dee2cb25be684a27ff32931459fd2e5b1ed205ab89f31fd2e0fc53fc964c1a576d33cbcfbf69611f3d694f11851152f4bc415145 | ||
8123 | languageName: node | ||
8124 | linkType: hard | ||
8125 | |||
8117 | "sisteransi@npm:^1.0.5": | 8126 | "sisteransi@npm:^1.0.5": |
8118 | version: 1.0.5 | 8127 | version: 1.0.5 |
8119 | resolution: "sisteransi@npm:1.0.5" | 8128 | resolution: "sisteransi@npm:1.0.5" |
@@ -8190,6 +8199,7 @@ __metadata: | |||
8190 | resolution: "sophie@workspace:." | 8199 | resolution: "sophie@workspace:." |
8191 | dependencies: | 8200 | dependencies: |
8192 | "@electron/fuses": ^1.5.0 | 8201 | "@electron/fuses": ^1.5.0 |
8202 | "@types/is-ci": ^3 | ||
8193 | "@types/jest": ^27.4.0 | 8203 | "@types/jest": ^27.4.0 |
8194 | "@types/prettier": ^2 | 8204 | "@types/prettier": ^2 |
8195 | "@typescript-eslint/eslint-plugin": ^5.9.0 | 8205 | "@typescript-eslint/eslint-plugin": ^5.9.0 |
@@ -8217,10 +8227,13 @@ __metadata: | |||
8217 | eslint-plugin-security: ^1.4.0 | 8227 | eslint-plugin-security: ^1.4.0 |
8218 | eslint-plugin-unicorn: ^40.0.0 | 8228 | eslint-plugin-unicorn: ^40.0.0 |
8219 | git-repo-info: ^2.1.1 | 8229 | git-repo-info: ^2.1.1 |
8230 | is-ci: ^3.0.1 | ||
8220 | jest: ^27.4.7 | 8231 | jest: ^27.4.7 |
8232 | nano-staged: ^0.5.0 | ||
8221 | preload: ^0.1.0 | 8233 | preload: ^0.1.0 |
8222 | prettier: ^2.5.1 | 8234 | prettier: ^2.5.1 |
8223 | rimraf: ^3.0.2 | 8235 | rimraf: ^3.0.2 |
8236 | simple-git-hooks: ^2.7.0 | ||
8224 | typescript: ^4.5.4 | 8237 | typescript: ^4.5.4 |
8225 | vite: ^2.7.10 | 8238 | vite: ^2.7.10 |
8226 | languageName: unknown | 8239 | languageName: unknown |