Skip to content

Commit 3ad0b02

Browse files
authored
Make sonarjs optional, migrate from tsup to tsdown (#245)
1 parent f76cd3e commit 3ad0b02

23 files changed

+5719
-3231
lines changed

.changeset/shiny-lights-hunt.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
"@zemd/eslint-rock-stack": major
3+
"@zemd/eslint-common": major
4+
"@zemd/eslint-astro": major
5+
"@zemd/eslint-react": major
6+
"@zemd/eslint-next": major
7+
"@zemd/eslint-js": major
8+
"@zemd/eslint-ts": major
9+
---
10+
11+
Make sonarjs optional, migrate from tsup to tsdown

.github/workflows/add-changeset.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ jobs:
4141
with:
4242
run_install: false
4343

44-
- name: Setup Node.js 22.x
44+
- name: Setup Node.js
4545
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
4646
with:
47-
node-version: 22.x
47+
node-version: 24
4848
cache: "pnpm"
4949

5050
- name: Install dependencies

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ jobs:
3333
with:
3434
run_install: false
3535

36-
- name: Setup Node.js 22.x
36+
- name: Setup Node.js
3737
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
3838
with:
39-
node-version: 22.x
39+
node-version: 24
4040
cache: "pnpm"
4141

4242
- name: Install Dependencies
File renamed without changes.

packages/astro/package.json

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,11 @@
3838
"type": "module",
3939
"exports": {
4040
".": {
41-
"import": "./dist/index.js",
42-
"require": "./dist/index.cjs"
41+
"import": "./dist/index.mjs"
4342
}
4443
},
45-
"main": "./dist/index.cjs",
46-
"module": "./dist/index.js",
47-
"types": "./dist/index.d.ts",
44+
"module": "./dist/index.mjs",
45+
"types": "./dist/index.d.mts",
4846
"peerDependencies": {
4947
"eslint": ">=9.2.0"
5048
},
@@ -57,12 +55,12 @@
5755
"@types/eslint": "catalog:",
5856
"@zemd/tsconfig": "catalog:",
5957
"eslint": "catalog:",
60-
"tsup": "catalog:",
58+
"tsdown": "^0.20.0-beta.4",
6159
"typescript": "catalog:"
6260
},
6361
"scripts": {
64-
"build": "tsup-node --minify",
65-
"dev": "tsup-node --watch",
62+
"build": "tsdown --minify",
63+
"dev": "tsdown --watch",
6664
"lint": "publint"
6765
}
6866
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { defineConfig } from "tsup";
1+
import { defineConfig } from "tsdown";
22

33
export default defineConfig({
44
entry: ["src/index.ts"],
5-
splitting: false,
65
sourcemap: false,
76
clean: true,
87
dts: true,
9-
format: ["cjs", "esm"],
8+
format: ["esm"],
9+
target: false,
1010
});

packages/common/package.json

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,24 +31,22 @@
3131
"type": "module",
3232
"exports": {
3333
".": {
34-
"import": "./dist/index.js",
35-
"require": "./dist/index.cjs"
34+
"import": "./dist/index.mjs"
3635
}
3736
},
38-
"main": "./dist/index.cjs",
39-
"module": "./dist/index.js",
37+
"module": "./dist/index.mjs",
4038
"peerDependencies": {
4139
"eslint": "^9.2.0"
4240
},
4341
"devDependencies": {
4442
"@zemd/tsconfig": "catalog:",
4543
"eslint": "catalog:",
46-
"tsup": "catalog:",
44+
"tsdown": "^0.20.0-beta.4",
4745
"typescript": "catalog:"
4846
},
4947
"scripts": {
50-
"build": "tsup-node --minify",
51-
"dev": "tsup-node --watch",
48+
"build": "tsdown --minify",
49+
"dev": "tsdown --watch",
5250
"lint": "publint"
5351
}
5452
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { defineConfig } from "tsup";
1+
import { defineConfig } from "tsdown";
22

33
export default defineConfig({
44
entry: ["src/index.ts"],
5-
splitting: false,
65
sourcemap: false,
76
clean: true,
87
dts: true,
9-
format: ["cjs", "esm"],
8+
format: ["esm"],
9+
target: false,
1010
});

packages/js/README.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ This package includes a set of ESLint configurations for **JavaScript** projects
77

88
**The package includes**:
99

10-
| Package | Description | Rules | License |
11-
| ------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------- |
12-
| `eslint-config-flat-gitignore` | ignores all files from your `.gitignore` file | | MIT |
13-
| `@eslint/js` | standard ESLint rules | `recommended` plus hand-picked rules that were not included | MIT |
14-
| `eslint-plugin-unicorn` | modern set of rules | I think pretty opinionated, so I carefully hand-picked rules, avoiding style related rules | MIT |
15-
| `eslint-plugin-sonarjs` | ESLint plugin maintained by Sonar, designed to help developers write Clean Code | all `recommended` rules minus some disabled for better DX | LGPL-3.0-only |
16-
| `@eslint-community/eslint-plugin-eslint-comments` | additional ESLint rules for ESLint directive comments (e.g. //eslint-disable-line) | `recommended` rules | MIT |
17-
| `@eslint/json` | plugin that allows you to natively lint JSON and JSONC | `recommended` rules minus the `sort-keys` | Apache-2.0 |
18-
| `eslint-plugin-regexp` | ESLint plugin for finding RegExp mistakes | `recommended` rules | MIT |
10+
| Package | Description | Rules | License |
11+
| ------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------- |
12+
| `eslint-config-flat-gitignore` | ignores all files from your `.gitignore` file | | MIT |
13+
| `@eslint/js` | standard ESLint rules | `recommended` plus hand-picked rules that were not included | MIT |
14+
| `eslint-plugin-unicorn` | modern set of rules | I think pretty opinionated, so I carefully hand-picked rules, avoiding style related rules | MIT |
15+
| `eslint-plugin-sonarjs` | (Optional) ESLint plugin maintained by Sonar, designed to help developers write Clean Code | all `recommended` rules minus some disabled for better DX (auto-enabled when installed) | LGPL-3.0-only |
16+
| `@eslint-community/eslint-plugin-eslint-comments` | additional ESLint rules for ESLint directive comments (e.g. //eslint-disable-line) | `recommended` rules | MIT |
17+
| `@eslint/json` | plugin that allows you to natively lint JSON and JSONC | `recommended` rules minus the `sort-keys` | Apache-2.0 |
18+
| `eslint-plugin-regexp` | ESLint plugin for finding RegExp mistakes | `recommended` rules | MIT |
1919

2020
## Installation
2121

@@ -32,6 +32,10 @@ import javascript from "@zemd/eslint-js";
3232
export default [...javascript()];
3333
```
3434

35+
## SonarJS rules (optional)
36+
37+
To stay compliant with enterprise policies that forbid LGPL software, SonarJS rules are **optional**. If you want to use them, install `eslint-plugin-sonarjs` and the rules will be detected and enabled automatically.
38+
3539
## You might be also interested in
3640

3741
| Package | Version | Description |

packages/js/package.json

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,19 @@
3434
"type": "module",
3535
"exports": {
3636
".": {
37-
"import": "./dist/index.js",
38-
"require": "./dist/index.cjs"
37+
"import": "./dist/index.mjs"
3938
}
4039
},
41-
"main": "./dist/index.cjs",
42-
"module": "./dist/index.js",
43-
"types": "./dist/index.d.ts",
40+
"module": "./dist/index.mjs",
41+
"types": "./dist/index.d.mts",
4442
"peerDependencies": {
45-
"eslint": ">=9.2.0"
43+
"eslint": ">=9.2.0",
44+
"eslint-plugin-sonarjs": "^3.0.5"
45+
},
46+
"peerDependenciesMeta": {
47+
"eslint-plugin-sonarjs": {
48+
"optional": true
49+
}
4650
},
4751
"dependencies": {
4852
"@eslint-community/eslint-plugin-eslint-comments": "^4.6.0",
@@ -51,20 +55,21 @@
5155
"@zemd/eslint-common": "workspace:*",
5256
"eslint-config-flat-gitignore": "^2.1.0",
5357
"eslint-plugin-regexp": "^2.10.0",
54-
"eslint-plugin-sonarjs": "^3.0.5",
5558
"eslint-plugin-unicorn": "^62.0.0",
56-
"globals": "^17.0.0"
59+
"globals": "^17.0.0",
60+
"local-pkg": "^1.1.2"
5761
},
5862
"devDependencies": {
5963
"@types/eslint": "catalog:",
64+
"@types/node": "catalog:",
6065
"@zemd/tsconfig": "catalog:",
6166
"eslint": "catalog:",
62-
"tsup": "catalog:",
67+
"tsdown": "^0.20.0-beta.4",
6368
"typescript": "catalog:"
6469
},
6570
"scripts": {
66-
"build": "tsup-node --minify",
67-
"dev": "tsup-node --watch",
71+
"build": "tsdown --minify",
72+
"dev": "tsdown --watch",
6873
"lint": "publint"
6974
}
7075
}

0 commit comments

Comments
 (0)