Skip to content

Commit bebd1ec

Browse files
committed
feat(eslint-config): add package-json recommended export
- Add eslint-plugin-package-json dependency - Export recommended-publishable and stylistic configs via ./package-json subpath - Add CI workflow with ESLint caching - Enable --cache flag on lint scripts
1 parent c878477 commit bebd1ec

7 files changed

Lines changed: 106 additions & 4 deletions

File tree

.github/workflows/ci.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
9+
jobs:
10+
lint:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- uses: oven-sh/setup-bun@v2
16+
with:
17+
bun-version: latest
18+
19+
- name: Install dependencies
20+
run: bun install
21+
22+
- name: Cache ESLint
23+
uses: actions/cache@v4
24+
with:
25+
path: .eslintcache
26+
key: eslint-${{ runner.os }}-${{ hashFiles('**/package.json', 'eslint.config.*') }}
27+
restore-keys: |
28+
eslint-${{ runner.os }}-
29+
30+
- name: Lint
31+
run: bun run lint

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ dist/
33
.turbo/
44
.idea/
55
.DS_Store
6+
.eslintcache

bun.lock

Lines changed: 59 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
},
2121
"scripts": {
2222
"build": "turbo run build",
23-
"lint": "eslint .",
24-
"lint:fix": "eslint . --fix",
23+
"lint": "eslint . --cache",
24+
"lint:fix": "eslint . --fix --cache",
2525
"release": "turbo run build"
2626
},
2727
"devDependencies": {

packages/eslint-config/package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
".": {
88
"types": "./dist/index.d.ts",
99
"import": "./dist/index.js"
10+
},
11+
"./package-json": {
12+
"types": "./dist/package-json.d.ts",
13+
"import": "./dist/package-json.js"
1014
}
1115
},
1216
"main": "./dist/index.js",
@@ -18,7 +22,8 @@
1822
"build": "tsdown"
1923
},
2024
"dependencies": {
21-
"@antfu/eslint-config": "^7.7.0"
25+
"@antfu/eslint-config": "^7.7.0",
26+
"eslint-plugin-package-json": "^0.30.0"
2227
},
2328
"peerDependencies": {
2429
"eslint": "^9.10.0 || ^10.0.0"
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import packageJson from 'eslint-plugin-package-json'
2+
3+
export const recommended = packageJson.configs['recommended-publishable']
4+
export const stylistic = packageJson.configs.stylistic
5+
6+
export default recommended

packages/eslint-config/tsdown.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { defineConfig } from 'tsdown'
22

33
export default defineConfig({
4-
entry: 'src/index.ts',
4+
entry: ['src/index.ts', 'src/package-json.ts'],
55
format: 'esm',
66
dts: true,
77
clean: true,

0 commit comments

Comments
 (0)