aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-01-10 01:43:23 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-01-10 11:09:08 +0100
commit526dc3ee63d308aef1ba2c75cd7a9cc4c9577a73 (patch)
treebb0f3c7365b90b007e48b9b9f209aec08138ada5
parentbuild: Add eslint-plugin-security (diff)
downloadsophie-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.json7
-rw-r--r--.simple-git-hooks.json3
-rw-r--r--README.md2
-rw-r--r--package.json9
-rw-r--r--yarn.lock61
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}
diff --git a/README.md b/README.md
index 6c8b45a..757c53c 100644
--- a/README.md
+++ b/README.md
@@ -64,7 +64,7 @@ yarn typecheck
64To run the linter, run 64To run the linter, run
65 65
66```sh 66```sh
67yarn run lint 67yarn 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 },
diff --git a/yarn.lock b/yarn.lock
index 290446e..09dff68 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -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