glab-setup-git-identity 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +11 -0
  3. package/.github/workflows/release.yml +372 -0
  4. package/.husky/pre-commit +1 -0
  5. package/.jscpd.json +20 -0
  6. package/.prettierignore +7 -0
  7. package/.prettierrc +10 -0
  8. package/CHANGELOG.md +143 -0
  9. package/LICENSE +24 -0
  10. package/README.md +455 -0
  11. package/bunfig.toml +3 -0
  12. package/deno.json +7 -0
  13. package/docs/case-studies/issue-13/README.md +195 -0
  14. package/docs/case-studies/issue-13/hive-mind-issue-960.json +23 -0
  15. package/docs/case-studies/issue-13/hive-mind-pr-961-diff.txt +773 -0
  16. package/docs/case-studies/issue-13/hive-mind-pr-961.json +126 -0
  17. package/docs/case-studies/issue-21/README.md +384 -0
  18. package/docs/case-studies/issue-21/ci-logs/run-20803315337.txt +1188 -0
  19. package/docs/case-studies/issue-21/ci-logs/run-20885464993.txt +1310 -0
  20. package/docs/case-studies/issue-21/issue-111-data.txt +15 -0
  21. package/docs/case-studies/issue-21/issue-113-data.txt +15 -0
  22. package/docs/case-studies/issue-21/pr-112-data.json +109 -0
  23. package/docs/case-studies/issue-21/pr-112-diff.patch +1336 -0
  24. package/docs/case-studies/issue-21/pr-114-data.json +126 -0
  25. package/docs/case-studies/issue-21/pr-114-diff.patch +879 -0
  26. package/docs/case-studies/issue-3/README.md +338 -0
  27. package/docs/case-studies/issue-3/created-issues.md +32 -0
  28. package/docs/case-studies/issue-3/issue-data.json +29 -0
  29. package/docs/case-studies/issue-3/original-format-release-notes.mjs +212 -0
  30. package/docs/case-studies/issue-3/reference-pr-59-diff.txt +614 -0
  31. package/docs/case-studies/issue-3/reference-pr-59.json +109 -0
  32. package/docs/case-studies/issue-3/release-v0.1.0.json +9 -0
  33. package/docs/case-studies/issue-3/repositories-with-same-script.json +22 -0
  34. package/docs/case-studies/issue-3/research-notes.md +33 -0
  35. package/docs/case-studies/issue-7/BEST-PRACTICES-COMPARISON.md +334 -0
  36. package/docs/case-studies/issue-7/FORMATTER-COMPARISON.md +649 -0
  37. package/docs/case-studies/issue-7/current-repository-analysis.json +70 -0
  38. package/docs/case-studies/issue-7/effect-template-analysis.json +178 -0
  39. package/eslint.config.js +91 -0
  40. package/examples/basic-usage.js +64 -0
  41. package/experiments/test-changeset-scripts.mjs +303 -0
  42. package/experiments/test-failure-detection.mjs +143 -0
  43. package/experiments/test-format-major-changes.mjs +49 -0
  44. package/experiments/test-format-minor-changes.mjs +52 -0
  45. package/experiments/test-format-no-hash.mjs +43 -0
  46. package/experiments/test-format-patch-changes.mjs +46 -0
  47. package/package.json +80 -0
  48. package/scripts/changeset-version.mjs +75 -0
  49. package/scripts/check-changesets.mjs +67 -0
  50. package/scripts/check-version.mjs +129 -0
  51. package/scripts/create-github-release.mjs +93 -0
  52. package/scripts/create-manual-changeset.mjs +89 -0
  53. package/scripts/detect-code-changes.mjs +194 -0
  54. package/scripts/format-github-release.mjs +83 -0
  55. package/scripts/format-release-notes.mjs +219 -0
  56. package/scripts/instant-version-bump.mjs +172 -0
  57. package/scripts/js-paths.mjs +177 -0
  58. package/scripts/merge-changesets.mjs +263 -0
  59. package/scripts/publish-to-npm.mjs +302 -0
  60. package/scripts/setup-npm.mjs +37 -0
  61. package/scripts/validate-changeset.mjs +265 -0
  62. package/scripts/version-and-commit.mjs +284 -0
  63. package/src/cli.js +386 -0
  64. package/src/index.d.ts +255 -0
  65. package/src/index.js +563 -0
  66. package/tests/index.test.js +137 -0
@@ -0,0 +1,649 @@
1
+ # JavaScript/TypeScript Code Formatter Comparison (2025)
2
+
3
+ ## Overview
4
+
5
+ This document provides a comprehensive comparison of JavaScript/TypeScript code formatters available in 2025, focusing on their features, performance, CI integration, pre-commit hook support, and autoformatting capabilities.
6
+
7
+ **Analysis Date:** 2025-12-18
8
+
9
+ ---
10
+
11
+ ## Executive Summary
12
+
13
+ | Formatter | Primary Use Case | Speed | CI Support | Pre-commit | Autoformat | Active Development |
14
+ | --------------- | --------------------------------- | -------------- | ---------- | ---------- | ---------- | ------------------------ |
15
+ | **Prettier** | Industry standard, multi-language | Baseline | ✅ Yes | ✅ Yes | ✅ Yes | Active |
16
+ | **Biome** | All-in-one linter + formatter | 35-100x faster | ✅ Yes | ✅ Yes | ✅ Yes | Very Active (2025 focus) |
17
+ | **dprint** | Fast, focused formatter | 20-60x faster | ✅ Yes | ✅ Yes | ✅ Yes | Active |
18
+ | **Standard JS** | Zero-config style guide | Moderate | ✅ Yes | ✅ Yes | ✅ Yes | Maintenance mode |
19
+
20
+ ---
21
+
22
+ ## Detailed Comparison
23
+
24
+ ### 1. Prettier
25
+
26
+ **Website:** https://prettier.io/
27
+
28
+ #### Overview
29
+
30
+ - Opinionated code formatter with minimal configuration
31
+ - Industry standard with widespread adoption
32
+ - Supports JavaScript, TypeScript, JSX, JSON, CSS, HTML, Markdown, YAML, and more
33
+ - 20MB of npm dependencies
34
+
35
+ #### Performance
36
+
37
+ - Large codebases take seconds to format
38
+ - Adds up when formatting on every save or in pre-commit hooks
39
+ - Baseline for speed comparisons
40
+
41
+ #### Features
42
+
43
+ **CI Integration:**
44
+
45
+ ```bash
46
+ # Check formatting
47
+ npx prettier --check "src/**/*.{js,ts,jsx,tsx}"
48
+
49
+ # Format files
50
+ npx prettier --write "src/**/*.{js,ts,jsx,tsx}"
51
+ ```
52
+
53
+ **Pre-commit Hook (using husky + lint-staged):**
54
+
55
+ ```json
56
+ {
57
+ "husky": {
58
+ "hooks": {
59
+ "pre-commit": "lint-staged"
60
+ }
61
+ },
62
+ "lint-staged": {
63
+ "*.{js,ts,jsx,tsx}": "prettier --write"
64
+ }
65
+ }
66
+ ```
67
+
68
+ **Autoformat:**
69
+
70
+ - Format on save in VS Code
71
+ - CLI: `prettier --write .`
72
+ - Supports incremental formatting (only changed files)
73
+
74
+ #### Pros
75
+
76
+ - ✅ Mature ecosystem with extensive plugin support
77
+ - ✅ Works with virtually all editors and IDEs
78
+ - ✅ Consistent formatting across projects
79
+ - ✅ Large community and extensive documentation
80
+ - ✅ Multi-language support
81
+
82
+ #### Cons
83
+
84
+ - ❌ Slower than Rust-based alternatives
85
+ - ❌ Large dependency footprint
86
+ - ❌ Only handles formatting (requires separate linter)
87
+
88
+ #### Recommendation
89
+
90
+ **Best for:** Teams wanting a stable, well-documented, industry-standard formatter with broad language support.
91
+
92
+ ---
93
+
94
+ ### 2. Biome
95
+
96
+ **Website:** https://biomejs.dev/
97
+
98
+ #### Overview
99
+
100
+ - Modern toolchain combining linting and formatting
101
+ - Written in Rust for exceptional performance
102
+ - Replaces both ESLint and Prettier
103
+ - 97% compatibility with Prettier formatting
104
+ - **Note:** Biome is the community fork of Rome (forked August 2023)
105
+
106
+ #### Performance
107
+
108
+ - **7x faster** than Prettier on single-threaded workloads
109
+ - **100x faster** on multi-core systems (M1 Max with 10 cores)
110
+ - Significantly faster than both Prettier and dprint
111
+
112
+ #### Features
113
+
114
+ **CI Integration:**
115
+
116
+ ```bash
117
+ # Check all files (formatting, linting, etc.)
118
+ npx @biomejs/biome ci ./src
119
+
120
+ # Check formatting only
121
+ npx @biomejs/biome format --check ./src
122
+
123
+ # Lint only
124
+ npx @biomejs/biome lint ./src
125
+ ```
126
+
127
+ **Pre-commit Hook (using husky):**
128
+
129
+ ```bash
130
+ # With --staged flag (Biome 1.7.0+)
131
+ npx @biomejs/biome check --error-on-warnings --no-errors-on-unmatched --staged
132
+
133
+ # Without lint-staged needed (baked-in support)
134
+ ```
135
+
136
+ **Autoformat:**
137
+
138
+ ```bash
139
+ # Format and apply safe fixes
140
+ npx @biomejs/biome check --write ./src
141
+
142
+ # Format only
143
+ npx @biomejs/biome format --write ./src
144
+ ```
145
+
146
+ **Configuration (biome.json):**
147
+
148
+ ```json
149
+ {
150
+ "formatter": {
151
+ "enabled": true,
152
+ "indentStyle": "space"
153
+ },
154
+ "linter": {
155
+ "enabled": true,
156
+ "rules": {
157
+ "recommended": true
158
+ }
159
+ }
160
+ }
161
+ ```
162
+
163
+ #### Pros
164
+
165
+ - ✅ **All-in-one tool** (linter + formatter + more)
166
+ - ✅ Exceptional performance (35-100x faster than Prettier)
167
+ - ✅ Single configuration file (biome.json)
168
+ - ✅ Built-in staged file support (no lint-staged needed)
169
+ - ✅ Type-aware linting (Biome 2.0+)
170
+ - ✅ Plugin support (2025)
171
+ - ✅ Very active development
172
+ - ✅ Simplifies toolchain (fewer dependencies)
173
+
174
+ #### Cons
175
+
176
+ - ❌ Newer tool (less mature than Prettier)
177
+ - ❌ Smaller community and ecosystem
178
+ - ❌ Missing some typescript-eslint rules (64 of 100+)
179
+ - ❌ No incremental formatting (formats all files)
180
+ - ❌ Type-checking still experimental vs. full TypeScript compiler
181
+
182
+ #### Recent Milestones
183
+
184
+ - **June 2025:** Biome v2.0 - type-aware linting, plugins, multi-file analysis
185
+ - **January 2024:** Biome reaches 97% Prettier compatibility
186
+ - **August 2023:** Forked from Rome after Rome Tools Inc. shutdown
187
+
188
+ #### Recommendation
189
+
190
+ **Best for:** Teams wanting a unified, high-performance toolchain and willing to adopt newer technology. Ideal for TypeScript projects where speed is critical.
191
+
192
+ ---
193
+
194
+ ### 3. dprint
195
+
196
+ **Website:** https://dprint.dev/
197
+
198
+ #### Overview
199
+
200
+ - Code formatter written in Rust
201
+ - Compiles to native binary (~15MB)
202
+ - Zero npm dependencies
203
+ - Follows Prettier's formatting principles
204
+ - Focused solely on formatting (does one thing well)
205
+
206
+ #### Performance
207
+
208
+ - **20-60x faster** than Prettier
209
+ - Entire pre-commit hook runs in **under 1 second** (~100ms for formatting)
210
+ - Commits feel instant
211
+
212
+ #### Features
213
+
214
+ **CI Integration:**
215
+
216
+ ```bash
217
+ # Check formatting
218
+ dprint check
219
+
220
+ # Format files
221
+ dprint fmt
222
+ ```
223
+
224
+ **Pre-commit Hook:**
225
+
226
+ ```bash
227
+ # Extremely fast pre-commit
228
+ dprint fmt --staged
229
+ ```
230
+
231
+ **Configuration (.dprintrc.json):**
232
+
233
+ ```json
234
+ {
235
+ "typescript": {
236
+ "lineWidth": 100
237
+ },
238
+ "json": {},
239
+ "markdown": {},
240
+ "includes": ["**/*.{ts,tsx,js,jsx,json,md}"],
241
+ "excludes": ["**/node_modules"]
242
+ }
243
+ ```
244
+
245
+ #### Pros
246
+
247
+ - ✅ **Exceptional speed** (20-60x faster)
248
+ - ✅ **Zero npm dependencies** (single binary)
249
+ - ✅ Focused tool that does one thing well
250
+ - ✅ Nearly identical to Prettier output
251
+ - ✅ Supports incremental formatting
252
+ - ✅ Fast pre-commit experience
253
+
254
+ #### Cons
255
+
256
+ - ❌ Only handles formatting (requires separate linter)
257
+ - ❌ Smaller ecosystem than Prettier
258
+ - ❌ Less editor integration than Prettier
259
+
260
+ #### Recommendation
261
+
262
+ **Best for:** Teams wanting the fastest possible formatter with minimal dependencies, who already have a linter (ESLint) and value specialized tools.
263
+
264
+ ---
265
+
266
+ ### 4. Standard JS
267
+
268
+ **Website:** https://standardjs.com/
269
+
270
+ #### Overview
271
+
272
+ - Zero-configuration JavaScript style guide
273
+ - Combines linting and formatting
274
+ - No configuration files needed
275
+ - Opinionated rules (semicolons, 2-space indent, etc.)
276
+
277
+ #### Features
278
+
279
+ **CI Integration:**
280
+
281
+ ```bash
282
+ # Check code
283
+ standard
284
+
285
+ # Auto-fix issues
286
+ standard --fix
287
+ ```
288
+
289
+ **Pre-commit Hook:**
290
+
291
+ ```json
292
+ {
293
+ "husky": {
294
+ "hooks": {
295
+ "pre-commit": "standard"
296
+ }
297
+ }
298
+ }
299
+ ```
300
+
301
+ **Autoformat:**
302
+
303
+ ```bash
304
+ standard --fix
305
+ ```
306
+
307
+ #### Pros
308
+
309
+ - ✅ Zero configuration required
310
+ - ✅ Simple to set up
311
+ - ✅ Good for small projects or quick prototypes
312
+ - ✅ Combines linting and formatting
313
+
314
+ #### Cons
315
+
316
+ - ❌ Very opinionated (limited customization)
317
+ - ❌ JavaScript-only (no TypeScript without extensions)
318
+ - ❌ Slower than Rust-based alternatives
319
+ - ❌ Less active development
320
+
321
+ #### Recommendation
322
+
323
+ **Best for:** Solo developers or small projects wanting zero configuration. Not recommended for TypeScript or teams needing customization.
324
+
325
+ ---
326
+
327
+ ## Feature Comparison Matrix
328
+
329
+ ### Core Capabilities
330
+
331
+ | Feature | Prettier | Biome | dprint | Standard JS |
332
+ | -------------------------- | ----------- | ---------- | -------------- | ----------- |
333
+ | **Formatting** | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
334
+ | **Linting** | ❌ No | ✅ Yes | ❌ No | ✅ Yes |
335
+ | **Type Checking** | ❌ No | ⚠️ Partial | ❌ No | ❌ No |
336
+ | **CI Check Mode** | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
337
+ | **Autoformat** | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
338
+ | **Pre-commit Support** | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
339
+ | **Incremental Formatting** | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |
340
+ | **Configuration File** | .prettierrc | biome.json | .dprintrc.json | ❌ None |
341
+
342
+ ### Language Support
343
+
344
+ | Language | Prettier | Biome | dprint | Standard JS |
345
+ | ---------- | -------- | ------ | ------ | ------------- |
346
+ | JavaScript | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
347
+ | TypeScript | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Via plugin |
348
+ | JSX/TSX | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
349
+ | JSON | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No |
350
+ | CSS | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No |
351
+ | HTML | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No |
352
+ | Markdown | ✅ Yes | ❌ No | ✅ Yes | ❌ No |
353
+
354
+ ### Performance Metrics
355
+
356
+ | Metric | Prettier | Biome | dprint | Standard JS |
357
+ | ---------------------- | ------------- | ------------- | ------------- | ----------- |
358
+ | **Speed vs Prettier** | 1x (baseline) | 7-100x faster | 20-60x faster | ~1x |
359
+ | **Pre-commit Time** | Seconds | Milliseconds | ~100ms | Seconds |
360
+ | **Dependencies** | ~20MB npm | Rust binary | ~15MB binary | npm |
361
+ | **Multi-core Scaling** | Limited | Excellent | Good | Limited |
362
+
363
+ ---
364
+
365
+ ## Migration Considerations
366
+
367
+ ### From Prettier to Biome
368
+
369
+ **Compatibility:** 97% compatible with Prettier output
370
+
371
+ **Steps:**
372
+
373
+ 1. Install Biome: `npm install --save-dev @biomejs/biome`
374
+ 2. Initialize config: `npx @biomejs/biome init`
375
+ 3. Migrate settings: Use `biome migrate` command
376
+ 4. Update CI scripts
377
+ 5. Update pre-commit hooks
378
+ 6. Remove Prettier and ESLint dependencies
379
+
380
+ **Benefits:**
381
+
382
+ - Faster CI runs (80% faster build pipelines reported)
383
+ - Simplified configuration (one tool instead of two)
384
+ - Better performance on large codebases
385
+
386
+ **Risks:**
387
+
388
+ - Newer tool with smaller community
389
+ - Some formatting edge cases may differ
390
+ - Missing some advanced ESLint rules
391
+
392
+ ### From Prettier to dprint
393
+
394
+ **Compatibility:** Nearly identical to Prettier
395
+
396
+ **Steps:**
397
+
398
+ 1. Install dprint binary
399
+ 2. Create `.dprintrc.json`
400
+ 3. Update CI and pre-commit scripts
401
+ 4. Keep ESLint for linting
402
+
403
+ **Benefits:**
404
+
405
+ - Much faster formatting
406
+ - Zero npm dependencies
407
+ - Near-instant pre-commit hooks
408
+
409
+ **Risks:**
410
+
411
+ - Still need separate linter
412
+ - Smaller ecosystem
413
+ - Less editor support
414
+
415
+ ---
416
+
417
+ ## 2025 Trends and Recommendations
418
+
419
+ ### Industry Adoption
420
+
421
+ **Prettier:** Still the industry standard, used by most projects
422
+
423
+ **Biome:** Rapidly growing adoption in 2025
424
+
425
+ - Teams report 80% faster build pipelines
426
+ - Becoming the go-to for new TypeScript projects
427
+ - Strong momentum in React/Next.js communities
428
+
429
+ **dprint:** Stable niche for teams wanting speed without changing linters
430
+
431
+ ### For Our Repository
432
+
433
+ **Current Setup:** ESLint + Prettier (solid, stable)
434
+
435
+ **Recommendation for 2025:**
436
+
437
+ #### Option 1: Stay with Prettier + ESLint (Conservative)
438
+
439
+ ✅ **Pros:**
440
+
441
+ - Proven, stable, well-documented
442
+ - Extensive ecosystem
443
+ - Team familiarity
444
+ - Multi-language support
445
+
446
+ ❌ **Cons:**
447
+
448
+ - Slower on large codebases
449
+ - Two separate tools to configure
450
+
451
+ **Best if:** Team values stability, has multi-language needs, or doesn't have performance issues
452
+
453
+ #### Option 2: Migrate to Biome (Progressive)
454
+
455
+ ✅ **Pros:**
456
+
457
+ - 7-100x performance improvement
458
+ - Single tool for linting + formatting
459
+ - Active development with 2025 focus
460
+ - Type-aware linting
461
+ - Plugin support
462
+
463
+ ❌ **Cons:**
464
+
465
+ - Newer tool (requires team buy-in)
466
+ - Some missing typescript-eslint rules
467
+ - Migration effort required
468
+
469
+ **Best if:** Team wants cutting-edge tooling, values performance, primarily uses JS/TS
470
+
471
+ #### Option 3: Switch to dprint + ESLint (Performance-focused)
472
+
473
+ ✅ **Pros:**
474
+
475
+ - 20-60x faster formatting
476
+ - Zero npm dependencies
477
+ - Keep familiar ESLint setup
478
+ - Fast pre-commit hooks
479
+
480
+ ❌ **Cons:**
481
+
482
+ - Still two separate tools
483
+ - Smaller ecosystem
484
+ - Less editor integration
485
+
486
+ **Best if:** Team has slow formatting issues but wants to keep ESLint
487
+
488
+ ---
489
+
490
+ ## Conclusion
491
+
492
+ ### Quick Decision Guide
493
+
494
+ **Choose Prettier if:**
495
+
496
+ - You want the industry standard with maximum compatibility
497
+ - You need extensive multi-language support
498
+ - You value ecosystem maturity over performance
499
+ - Your team is familiar with Prettier
500
+
501
+ **Choose Biome if:**
502
+
503
+ - You want an all-in-one modern toolchain
504
+ - Performance is a priority (large codebase)
505
+ - You're willing to adopt newer technology
506
+ - You want to simplify your toolchain
507
+
508
+ **Choose dprint if:**
509
+
510
+ - You want maximum formatting speed
511
+ - You prefer specialized tools over all-in-one
512
+ - You're happy with your current linter
513
+ - You want minimal dependencies
514
+
515
+ **Choose Standard JS if:**
516
+
517
+ - You want zero configuration
518
+ - You have a small JavaScript-only project
519
+ - You're working solo or in a small team
520
+
521
+ ---
522
+
523
+ ## Sources
524
+
525
+ ### Research Sources
526
+
527
+ 1. [Biome: The Faster Lint and Formatting Alternative to Prettier](https://medium.com/navara/biome-the-faster-lint-and-formatting-alternative-to-prettier-12fcf8b122b9)
528
+ 2. [Differences with Prettier | Biome](https://biomejs.dev/formatter/differences-with-prettier/)
529
+ 3. [Biome, toolchain of the web](https://biomejs.dev/)
530
+ 4. [BiomeJS - A 35x faster alternative to Prettier](https://blog.oxyconit.com/biomejs-a-35x-faster-alternative-to-prettier-for-formatting-and-linting/)
531
+ 5. [Biome.js Replaces ESLint and Prettier: The 2025 Frontend Code Standards Revolution](https://markaicode.com/biome-js-frontend-code-standards-revolution-2025/)
532
+ 6. [dprint: The Rust-Based Code Formatter That's 10-100x Faster Than Prettier](https://mfyz.com/dprint-rust-based-code-formatter-faster-prettier/)
533
+ 7. [From ESLint and Prettier to Biome](https://kittygiraudel.com/2024/06/01/from-eslint-and-prettier-to-biome/)
534
+ 8. [Prettier vs Biome: Choosing the Right Tool for Quality Code](https://www.dhiwise.com/post/prettier-vs-biome-code-quality-comparison)
535
+ 9. [Transitioning from ESLint and Prettier to Biome: A Comprehensive Guide](https://medium.com/@yanirmanor/transitioning-from-eslint-and-prettier-to-biome-a-comprehensive-guide-fcbccb42dc2c)
536
+ 10. [Why I Chose Biome Over ESLint+Prettier: 20x Faster Linting](https://dev.to/saswatapal/why-i-chose-biome-over-eslintprettier-20x-faster-linting-one-tool-to-rule-them-all-10kf)
537
+ 11. [Biome formatter wins the Prettier challenge](https://biomejs.dev/blog/biome-wins-prettier-challenge/)
538
+ 12. [Announcing Biome](https://biomejs.dev/blog/announcing-biome/)
539
+ 13. [Biome adoption guide: Overview, examples, and alternatives](https://blog.logrocket.com/biome-adoption-guide/)
540
+ 14. [Announcing Biome: the community fork of Rome](https://github.com/rome/tools/discussions/4787)
541
+ 15. [Best Code Formatter for VSCode JavaScript](https://rapidfreeformatter.com/best-code-formatter-for-vscode-javascript-top-tools-for-speed-style-consistency/)
542
+ 16. [Alternatives to Prettier – Popular Code Linting and Formatting Tools](https://www.freecodecamp.org/news/alternatives-to-prettier/)
543
+
544
+ ---
545
+
546
+ ## Appendix: Sample Configurations
547
+
548
+ ### Prettier Configuration (.prettierrc)
549
+
550
+ ```json
551
+ {
552
+ "semi": true,
553
+ "trailingComma": "all",
554
+ "singleQuote": true,
555
+ "printWidth": 100,
556
+ "tabWidth": 2
557
+ }
558
+ ```
559
+
560
+ ### Biome Configuration (biome.json)
561
+
562
+ ```json
563
+ {
564
+ "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
565
+ "vcs": {
566
+ "enabled": true,
567
+ "clientKind": "git",
568
+ "useIgnoreFile": true
569
+ },
570
+ "formatter": {
571
+ "enabled": true,
572
+ "indentStyle": "space",
573
+ "indentWidth": 2,
574
+ "lineWidth": 100
575
+ },
576
+ "linter": {
577
+ "enabled": true,
578
+ "rules": {
579
+ "recommended": true,
580
+ "complexity": {
581
+ "noExtraBooleanCast": "error",
582
+ "noMultipleSpacesInRegularExpressionLiterals": "error",
583
+ "noUselessCatch": "error",
584
+ "noUselessTypeConstraint": "error",
585
+ "noWith": "error"
586
+ },
587
+ "correctness": {
588
+ "noConstAssign": "error",
589
+ "noConstantCondition": "error",
590
+ "noEmptyCharacterClassInRegex": "error",
591
+ "noEmptyPattern": "error",
592
+ "noGlobalObjectCalls": "error",
593
+ "noInvalidConstructorSuper": "error",
594
+ "noInvalidNewBuiltin": "error",
595
+ "noNonoctalDecimalEscape": "error",
596
+ "noPrecisionLoss": "error",
597
+ "noSelfAssign": "error",
598
+ "noSetterReturn": "error",
599
+ "noSwitchDeclarations": "error",
600
+ "noUndeclaredVariables": "error",
601
+ "noUnreachable": "error",
602
+ "noUnreachableSuper": "error",
603
+ "noUnsafeFinally": "error",
604
+ "noUnsafeOptionalChaining": "error",
605
+ "noUnusedLabels": "error",
606
+ "noUnusedVariables": "error",
607
+ "useIsNan": "error",
608
+ "useValidForDirection": "error",
609
+ "useYield": "error"
610
+ }
611
+ }
612
+ },
613
+ "javascript": {
614
+ "formatter": {
615
+ "quoteStyle": "single",
616
+ "semicolons": "always",
617
+ "trailingCommas": "all"
618
+ }
619
+ }
620
+ }
621
+ ```
622
+
623
+ ### dprint Configuration (.dprintrc.json)
624
+
625
+ ```json
626
+ {
627
+ "typescript": {
628
+ "lineWidth": 100,
629
+ "indentWidth": 2,
630
+ "useTabs": false,
631
+ "semiColons": "always",
632
+ "quoteStyle": "alwaysSingle",
633
+ "trailingCommas": "always"
634
+ },
635
+ "json": {
636
+ "indentWidth": 2
637
+ },
638
+ "markdown": {
639
+ "lineWidth": 100
640
+ },
641
+ "includes": ["**/*.{ts,tsx,js,jsx,json,md}"],
642
+ "excludes": ["**/node_modules", "**/*-lock.json", "**/dist", "**/build"],
643
+ "plugins": [
644
+ "https://plugins.dprint.dev/typescript-0.91.6.wasm",
645
+ "https://plugins.dprint.dev/json-0.19.3.wasm",
646
+ "https://plugins.dprint.dev/markdown-0.17.2.wasm"
647
+ ]
648
+ }
649
+ ```
@@ -0,0 +1,70 @@
1
+ {
2
+ "repository": "https://github.com/link-foundation/js-ai-driven-development-pipeline-template",
3
+ "analysis_date": "2025-12-18",
4
+ "description": "A JavaScript/TypeScript package template for AI-driven development",
5
+ "package_manager": "npm",
6
+ "configuration_files": {
7
+ "build_and_development": ["package.json", "bunfig.toml", "deno.json"],
8
+ "code_quality": ["eslint.config.js", ".prettierrc", ".prettierignore"],
9
+ "git_hooks": [".husky/pre-commit"],
10
+ "changesets": [".changeset/config.json"]
11
+ },
12
+ "github_workflows": {
13
+ "release.yml": {
14
+ "triggers": ["push to main", "pull_request", "workflow_dispatch"],
15
+ "jobs": [
16
+ "changeset-check",
17
+ "lint",
18
+ "test",
19
+ "release",
20
+ "instant-release",
21
+ "changeset-pr"
22
+ ],
23
+ "test_matrix": "3 runtimes x 3 OS = 9 combinations"
24
+ }
25
+ },
26
+ "eslint_rules": {
27
+ "base_configs": ["@eslint/js recommended", "prettier"],
28
+ "rules": {
29
+ "prettier_integration": true,
30
+ "no_unused_vars": "error",
31
+ "no_console": "off",
32
+ "no_debugger": "error",
33
+ "eqeqeq": "always",
34
+ "curly": "all",
35
+ "no_var": true,
36
+ "prefer_const": true,
37
+ "prefer_arrow_callback": true,
38
+ "no_duplicate_imports": true,
39
+ "object_shorthand": true,
40
+ "prefer_template": true
41
+ }
42
+ },
43
+ "prettier_config": {
44
+ "semi": true,
45
+ "trailingComma": "es5",
46
+ "singleQuote": true,
47
+ "printWidth": 80,
48
+ "tabWidth": 2,
49
+ "useTabs": false,
50
+ "arrowParens": "always",
51
+ "endOfLine": "lf"
52
+ },
53
+ "features": {
54
+ "multi_runtime_support": ["Node.js", "Bun", "Deno"],
55
+ "test_framework": "test-anywhere",
56
+ "release_automation": "Changesets",
57
+ "code_quality": ["ESLint", "Prettier", "Husky", "lint-staged"],
58
+ "file_size_limit": "1000 lines"
59
+ },
60
+ "devDependencies": [
61
+ "@changesets/cli",
62
+ "eslint",
63
+ "eslint-config-prettier",
64
+ "eslint-plugin-prettier",
65
+ "husky",
66
+ "lint-staged",
67
+ "prettier",
68
+ "test-anywhere"
69
+ ]
70
+ }