From bd7c34b073d83586bf7b08cd9a72c094b3356baa Mon Sep 17 00:00:00 2001 From: Cameron Clough Date: Fri, 10 Jan 2025 20:20:52 +0000 Subject: [PATCH] dx: replace husky with lefthook (#128) --- .github/workflows/build.yaml | 2 +- .husky/pre-commit | 1 - bun.lockb | Bin 316920 -> 320833 bytes eslint.config.js | 2 +- lefthook.yml | 6 ++++++ package.json | 6 ++---- 6 files changed, 10 insertions(+), 7 deletions(-) delete mode 100644 .husky/pre-commit create mode 100644 lefthook.yml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f10f0c1a..f9ff60ef 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,7 +17,7 @@ jobs: - run: bun install --frozen-lockfile - run: bun playwright install - - run: timeout 12s bun pre-commit + - run: timeout 12s bun lefthook run pre-commit - run: bun run test - run: ./check-lines.sh - name: Bundle size breakdown diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100644 index 5cb81a83..00000000 --- a/.husky/pre-commit +++ /dev/null @@ -1 +0,0 @@ -bun run pre-commit diff --git a/bun.lockb b/bun.lockb index cf9e67cac13800b5387294b158a4251038629747..52dc9cd11e22a758e484c6582070929810f34423 100755 GIT binary patch delta 12566 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 delta 10311 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 Jf3}(A`5*c&`85Cl diff --git a/eslint.config.js b/eslint.config.js index 0e735baf..f4b573df 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -12,7 +12,7 @@ export default [ languageOptions: { globals: globals.browser }, }, { - ignores: ['.github', '.husky', '.vscode', 'node_modules', 'dist'], + ignores: ['.github', '.vscode', 'dist'], }, js.configs.recommended, ...ts.configs.recommendedTypeChecked, diff --git a/lefthook.yml b/lefthook.yml new file mode 100644 index 00000000..f08e1f09 --- /dev/null +++ b/lefthook.yml @@ -0,0 +1,6 @@ +pre-commit: + parallel: true + commands: + lint: + glob: "*.{js,jsx,ts,tsx}" + run: bun lint {staged_files} diff --git a/package.json b/package.json index 3f8321fc..0de374e7 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,6 @@ "dev": "vite", "serve": "vite prefix", "lint": "eslint --cache --cache-location node_modules/.eslintcache", - "prepare": "husky", - "pre-commit": "bun lint", "test": "vitest run" }, "packageManager": "bun@1.1.43", @@ -33,8 +31,8 @@ "eslint-plugin-solid": "ESLint rules specific to solid", "eslint-plugin-tailwindcss": "ESLint rules specific to tailwind", "globals": "defines global identifiers for ESLint", - "husky": "git hooks tool, used here for pre-commit linting", "jsdom": "js implementation of the dom (used in testing env which we don't really make use of)", + "lefthook": "git hooks manager for pre-commit", "playwright": "take screenshots to post on PRs", "postcss": "transforms css with js; autoprefixer and tailwind get plugged into this", "solid-devtools": "visualize reactivity graph (consider if necessary)", @@ -60,8 +58,8 @@ "eslint-plugin-solid": "^0.14.5", "eslint-plugin-tailwindcss": "^3.17.5", "globals": "^15.14.0", - "husky": "^9.1.7", "jsdom": "^26.0.0", + "lefthook": "^1.10.3", "playwright": "^1.49.1", "postcss": "^8.4.49", "solid-devtools": "^0.33.0",