presetter 8.3.0 → 9.0.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 (55) hide show
  1. package/README.md +113 -98
  2. package/lib/context.d.ts +1 -1
  3. package/lib/context.d.ts.map +1 -1
  4. package/lib/debugger.d.ts.map +1 -1
  5. package/lib/executable/entry.d.ts +20 -1
  6. package/lib/executable/entry.d.ts.map +1 -1
  7. package/lib/executable/entry.js +78 -18
  8. package/lib/index.d.ts +5 -5
  9. package/lib/index.d.ts.map +1 -1
  10. package/lib/index.js +6 -6
  11. package/lib/io.d.ts +2 -2
  12. package/lib/io.d.ts.map +1 -1
  13. package/lib/io.js +2 -2
  14. package/lib/parsing.d.ts.map +1 -1
  15. package/lib/parsing.js +9 -7
  16. package/lib/preset/bootstrap.d.ts.map +1 -1
  17. package/lib/preset/bootstrap.js +7 -3
  18. package/lib/preset/config/resolve.d.ts +1 -1
  19. package/lib/preset/config/resolve.d.ts.map +1 -1
  20. package/lib/preset/config/resolve.js +1 -1
  21. package/lib/preset/project.d.ts +2 -2
  22. package/lib/preset/project.d.ts.map +1 -1
  23. package/lib/preset/project.js +3 -3
  24. package/lib/preset/resolution/asset.d.ts +3 -3
  25. package/lib/preset/resolution/asset.d.ts.map +1 -1
  26. package/lib/preset/resolution/asset.js +3 -3
  27. package/lib/preset/resolution/content.d.ts +3 -3
  28. package/lib/preset/resolution/content.d.ts.map +1 -1
  29. package/lib/preset/resolution/content.js +3 -3
  30. package/lib/preset/resolution/debugger.d.ts.map +1 -1
  31. package/lib/preset/resolution/object.d.ts +2 -2
  32. package/lib/preset/resolution/object.d.ts.map +1 -1
  33. package/lib/preset/resolution/object.js +1 -1
  34. package/lib/preset/resolution/preset.d.ts +1 -1
  35. package/lib/preset/resolution/preset.d.ts.map +1 -1
  36. package/lib/preset/resolution/roots.d.ts +1 -1
  37. package/lib/preset/resolution/roots.d.ts.map +1 -1
  38. package/lib/preset/resolution/script.d.ts +1 -1
  39. package/lib/preset/resolution/script.d.ts.map +1 -1
  40. package/lib/preset/resolution/variable.d.ts +1 -1
  41. package/lib/preset/resolution/variable.d.ts.map +1 -1
  42. package/lib/run.d.ts.map +1 -1
  43. package/lib/run.js +1 -1
  44. package/lib/scripts.js +1 -1
  45. package/lib/serialization.d.ts +1 -1
  46. package/lib/serialization.d.ts.map +1 -1
  47. package/lib/task.d.ts +3 -3
  48. package/lib/task.js +7 -7
  49. package/lib/template/merge.d.ts +12 -2
  50. package/lib/template/merge.d.ts.map +1 -1
  51. package/lib/template/merge.js +161 -1
  52. package/lib/template/substitute.d.ts +1 -1
  53. package/lib/template/substitute.d.ts.map +1 -1
  54. package/lib/utilities/display.js +1 -1
  55. package/package.json +17 -38
package/README.md CHANGED
@@ -1,17 +1,16 @@
1
1
  # 🚀 Presetter
2
2
 
3
- ![Logo](https://github.com/alvis/presetter/raw/master/assets/logo.svg)
3
+ <p align="center">
4
+ <img src="https://raw.githubusercontent.com/alvis/presetter/master/assets/logo.svg" alt="Presetter logo" height="128">
5
+ </p>
4
6
 
5
7
  <div align="center">
6
8
 
7
9
  [![npm](https://img.shields.io/npm/v/presetter?style=flat-square)](https://github.com/alvis/presetter/releases)
8
- [![build](https://img.shields.io/github/actions/workflow/status/alvis/presetter/test.yaml?branch=master&style=flat-square)](https://github.com/alvis/presetter/actions)
9
- [![maintainability](https://img.shields.io/codeclimate/maintainability/alvis/presetter?style=flat-square)](https://codeclimate.com/github/alvis/presetter/maintainability)
10
- [![coverage](https://img.shields.io/codeclimate/coverage/alvis/presetter?style=flat-square)](https://codeclimate.com/github/alvis/presetter/test_coverage)
11
- [![vulnerabilities](https://img.shields.io/sonar/vulnerabilities/presetter/master?server=https%3A%2F%2Fsonarcloud.io&style=flat-square)](https://sonarcloud.io/summary/new_code?id=presetter)
10
+ [![build](https://img.shields.io/github/actions/workflow/status/alvis/presetter/test.yaml?branch=main&style=flat-square)](https://github.com/alvis/presetter/actions)
12
11
  [![dependencies](https://img.shields.io/librariesio/release/npm/presetter?style=flat-square)](https://libraries.io/npm/presetter)
13
12
 
14
- Template-driven configuration management transform 40+ dev dependencies into 2 packages
13
+ Template-driven configuration management for TypeScript projects and monorepos
15
14
 
16
15
  •   [Quick Start](#-quick-start)   •   [CLI Reference](#-cli-reference)   •   [Presets](#-official-presets)   •   [Architecture](#-how-it-works)   •
17
16
 
@@ -19,70 +18,67 @@ Template-driven configuration management — transform 40+ dev dependencies into
19
18
 
20
19
  ---
21
20
 
22
- **Presetter is the configuration management tool that processes presets to generate perfect development environments with zero manual setup.**
21
+ **Presetter is the configuration management tool that turns an explicit preset stack into the files and scripts your TypeScript projects need.**
23
22
 
24
23
  ## ⚡ The Development Setup Revolution
25
24
 
26
25
  ### Still copying configs between projects? 😤
27
26
 
28
- How many times have you copied configuration files for `babel`, `eslint`, `vitest`, `typescript`, or life cycle scripts across projects? How many dev dependencies do you install before you can even start coding?
27
+ Every repo starts clean. Then the same `eslint`, `vitest`, `typescript`, build, and lifecycle settings fork in small ways across apps, packages, services, and CLIs.
29
28
 
30
- **What if setup took one command and two packages?**
29
+ Presetter moves that intent into `presetter.config.ts`: compose official presets for the shared baseline, keep local overrides visible, and regenerate the config files your toolchain still expects.
31
30
 
32
- ### The manual setup nightmare vs. Presetter magic ✨
31
+ <p align="center">
32
+ <video src="https://github.com/user-attachments/assets/03eef833-9c20-4d22-99c7-85f26c620e66" controls playsinline preload="metadata" width="100%" title="Presetter launch video: make configuration maintainable again">
33
+ <a href="https://github.com/user-attachments/assets/03eef833-9c20-4d22-99c7-85f26c620e66">Watch the Presetter launch video</a>
34
+ </video>
35
+ </p>
36
+
37
+ ### The config drift loop vs. Presetter
33
38
 
34
39
  ```diff
35
- # Before: Manual development setup (40+ packages, 20+ config files)
36
- my-project/
37
- ├── package.json 47 devDependencies to manage
38
- ├── .babelrc.json Manual Babel configuration
39
- ├── .eslintrc.json Custom ESLint rules and plugins
40
- ├── .prettierrc.json Prettier formatting rules
41
- ├── vitest.config.ts Test configuration
42
- ├── tsconfig.json ← TypeScript compiler options
43
- ├── tsconfig.build.json ← Build-specific TS config
44
- ├── .lintstagedrc.json ← Pre-commit hook configuration
45
- ├── .husky/ Git hooks setup
46
- ├── rollup.config.js Bundle configuration
47
- ├── tailwind.config.js CSS framework config
48
- └── ... (dozen more config files) ← Endless configuration maintenance
49
-
50
- # After: Presetter setup (2 packages, 1 command)
51
- my-project/
52
- +├── presetter.config.ts ← Single preset reference
53
- ├── package.json ← 2 devDependencies total!
54
- └── Perfect configs generated automatically from templates 🎯
40
+ # Before: copied config across repos and packages
41
+ workspace/
42
+ ├── apps/web/eslint.config.ts React-specific edits
43
+ ├── apps/api/eslint.config.ts Similar, but not quite the same
44
+ ├── packages/ui/vitest.config.ts Local test tweaks
45
+ ├── packages/core/tsconfig.json Shared intent copied by hand
46
+ └── packages/runtime/package.json Scripts slowly drift
47
+
48
+ # After: explicit preset stack plus generated outputs
49
+ workspace/
50
+ +├── presetter.config.ts Compose the maintained baseline
51
+ ├── package.json Scripts merge with preset scripts
52
+ └── generated config files Output files can stay out of Git
55
53
  ```
56
54
 
57
55
  ---
58
56
 
59
- ## 🎯 One Command. Perfect Setup. Every Time
57
+ ## 🎯 Compose the Toolchain You Need
60
58
 
61
59
  ```bash
62
- # Choose your development style and get everything instantly:
60
+ # Choose the preset stack that matches this project:
63
61
 
64
62
  # 🟢 Modern ESM development
65
- npx presetter use presetter-preset-esm
63
+ npx presetter use @presetter/preset-esm
66
64
 
67
65
  # 🔗 Legacy CommonJS compatibility
68
- npx presetter use presetter-preset-cjs
66
+ npx presetter use @presetter/preset-cjs
69
67
 
70
68
  # 🌐 Dual-module library publishing
71
- npx presetter use presetter-preset-hybrid
69
+ npx presetter use @presetter/preset-hybrid
72
70
 
73
71
  # 🎨 Modern web development with TailwindCSS + Storybook
74
- npx presetter use presetter-preset-esm presetter-preset-web
72
+ npx presetter use @presetter/preset-esm @presetter/preset-web
75
73
 
76
74
  # ⚛️ React application with optimized toolchain
77
- npx presetter use presetter-preset-esm presetter-preset-react
75
+ npx presetter use @presetter/preset-esm @presetter/preset-react
78
76
 
79
77
  # 🏢 Production-grade with security hardening + 100% coverage
80
- npx presetter use presetter-preset-esm presetter-preset-strict
78
+ npx presetter use @presetter/preset-esm @presetter/preset-strict
81
79
  ```
82
80
 
83
- **That's it.** TypeScript, ESLint, Vitest, build scripts, git hooks, formatter, linter, bundler — everything configured perfectly and working together.
84
-
85
- ![Demo](https://raw.githubusercontent.com/alvis/presetter/master/assets/demo.gif)
81
+ TypeScript, ESLint, Vitest, build scripts, git hooks, formatter, linter, bundler — the same maintained baseline can travel across repos while each project keeps the differences that matter.
86
82
 
87
83
  ---
88
84
 
@@ -95,21 +91,21 @@ Presetter doesn't copy static files. It **generates** configurations using sophi
95
91
  - **Context-aware**: Presets know about your project structure, dependencies, and requirements
96
92
  - **Variable substitution**: Templates use dynamic values (`{source}`, `{target}`, `{output}`)
97
93
  - **Smart merging**: Deep merge algorithms handle complex configuration inheritance
98
- - **Two-pass resolution**: Initial setup + override pass for perfect customization
94
+ - **Two-pass resolution**: Initial setup + override pass for controlled customization
99
95
 
100
96
  ### 🏗️ Composable Preset Architecture
101
97
 
102
98
  Mix and match presets like building blocks:
103
99
 
104
100
  ```typescript
105
- // presetter.config.ts - Build your perfect development environment
101
+ // presetter.config.ts - Build the stack this project needs
106
102
  import { preset } from 'presetter';
107
- import essentials from 'presetter-preset-essentials';
108
- import web from 'presetter-preset-web';
109
- import react from 'presetter-preset-react';
110
- import strict from 'presetter-preset-strict';
103
+ import essentials from '@presetter/preset-essentials';
104
+ import web from '@presetter/preset-web';
105
+ import react from '@presetter/preset-react';
106
+ import strict from '@presetter/preset-strict';
111
107
 
112
- export default preset('my-perfect-app', {
108
+ export default preset('my-app', {
113
109
  extends: [essentials, web, react, strict], // 🚀 Ultimate React stack
114
110
  override: {
115
111
  variables: {
@@ -121,11 +117,11 @@ export default preset('my-perfect-app', {
121
117
 
122
118
  ### ⚡ Real Developer Productivity
123
119
 
124
- | Manual Setup Time | With Presetter | Productivity Gain |
125
- | ------------------------------------- | -------------------------------- | ---------------------------- |
126
- | **2-4 hours** initial setup | **30 seconds** | **24x faster** |
127
- | **30 minutes** per config update | **Automatic** via preset updates | **∞ maintenance time saved** |
128
- | **Copy-paste errors** across projects | **Zero config drift** | **100% consistency** |
120
+ | Common Setup Pain | With Presetter | Result |
121
+ | ----------------------------------- | -------------------------------------- | ------------------------------- |
122
+ | Rebuilding the same toolchain setup | Compose a preset stack once | Faster project starts |
123
+ | Repeating config updates by hand | Update preset versions and bootstrap | Fewer risky edits |
124
+ | Copy-paste errors across projects | Keep shared intent in one config model | Less drift, clearer differences |
129
125
 
130
126
  ---
131
127
 
@@ -147,13 +143,13 @@ export default preset('my-perfect-app', {
147
143
 
148
144
  ## 🚀 Quick Start
149
145
 
150
- ### 🎬 Instant Project Setup
146
+ ### 🎬 Project Setup
151
147
 
152
148
  ```bash
153
- # 1. Choose and adopt a preset (creates presetter.config.ts automatically)
154
- npx presetter use presetter-preset-esm
149
+ # 1. Choose and adopt a preset stack
150
+ npx presetter use @presetter/preset-esm
155
151
 
156
- # 2. Install dependencies (presetter bootstrap runs automatically)
152
+ # 2. Install dependencies and let bootstrap generate tool configs
157
153
  npm install
158
154
 
159
155
  # 3. Start developing immediately!
@@ -169,13 +165,13 @@ npm run watch # ✅ Development mode
169
165
  # 1. Review current setup (decide what to keep/replace)
170
166
  ls -la *.config.* .*rc.* tsconfig*.json
171
167
 
172
- # 2. Remove unnecessary configs and dev dependencies
173
- npm uninstall babel eslint prettier typescript vitest # ...and 30+ more
168
+ # 2. Remove local config files you want presets to own
169
+ rm eslint.config.ts vitest.config.ts
174
170
 
175
171
  # 3. Adopt presetter
176
- npx presetter use presetter-preset-esm
172
+ npx presetter use @presetter/preset-esm
177
173
 
178
- # 4. Cleanup and enjoy zero-config development
174
+ # 4. Keep only the local overrides that matter
179
175
  ```
180
176
 
181
177
  ---
@@ -203,15 +199,34 @@ Options:
203
199
  --version Show version number
204
200
  ```
205
201
 
202
+ #### Bootstrap flags
203
+
204
+ | Flag | Alias | Default | Purpose |
205
+ | ------------------- | ----- | ------- | ------------------------------------------------------------------------------------------------- |
206
+ | `--projects <glob>` | `-p` | `.` | Path globs to project directories containing a `package.json` (e.g. `packages/*`, `presets/next`) |
207
+ | `--packages <glob>` | `-P` | _none_ | Package-name globs matching `package.json#name` across the workspace (e.g. `@presetter/preset-*`) |
208
+ | `--only <file>` | | _none_ | Only proceed when the specified file exists |
209
+
210
+ Both `--projects` and `--packages` accept comma-separated values; the wildcard `*` in `--packages` does not cross the npm-scope boundary (so `@presetter/preset-*` will not match `@other/foo`).
211
+
206
212
  ### 🎯 Common Commands
207
213
 
208
214
  ```bash
209
- # Adopt presets (automatically bootstraps)
210
- presetter use presetter-preset-esm presetter-preset-strict
215
+ # Adopt presets and run bootstrap
216
+ presetter use @presetter/preset-esm @presetter/preset-strict
211
217
 
212
218
  # Manually bootstrap (if needed)
213
219
  presetter bootstrap
214
220
 
221
+ # Bootstrap specific projects by path glob
222
+ presetter bootstrap --projects packages/*
223
+
224
+ # Bootstrap by package name (e.g. every preset package in a monorepo)
225
+ presetter bootstrap --packages "@presetter/preset-*"
226
+
227
+ # Mix path and name globs; both flags accept comma-separated values
228
+ presetter bootstrap --projects .,e2e,packages/* --packages "@presetter/preset-*"
229
+
215
230
  # Run development tasks
216
231
  run build # Build your project
217
232
  run test # Run tests
@@ -234,21 +249,21 @@ Presetter comes with a comprehensive ecosystem of official presets:
234
249
 
235
250
  ### Core Development Presets
236
251
 
237
- | Preset | Purpose | Best For |
238
- | ------------------------------------------------------------------------------------------------------------ | ------------------------------ | ----------------------------------------- |
239
- | **[presetter-preset-essentials](https://github.com/alvis/presetter/blob/master/packages/preset-essentials)** | 🏗️ Complete TypeScript toolkit | Foundation for all TypeScript projects |
240
- | **[presetter-preset-esm](https://github.com/alvis/presetter/blob/master/packages/preset-esm)** | 🚀 ESM-first development | Modern Node.js projects, libraries |
241
- | **[presetter-preset-cjs](https://github.com/alvis/presetter/blob/master/packages/preset-cjs)** | 🔗 CommonJS compatibility | Legacy environments, enterprise |
242
- | **[presetter-preset-hybrid](https://github.com/alvis/presetter/blob/master/packages/preset-hybrid)** | 🌐 Dual-module packages | npm libraries needing broad compatibility |
252
+ | Preset | Purpose | Best For |
253
+ | ----------------------------------------------------------------------------------------------------------- | ------------------------------ | ----------------------------------------- |
254
+ | **[@presetter/preset-essentials](https://github.com/alvis/presetter/blob/main/packages/preset-essentials)** | 🏗️ Complete TypeScript toolkit | Foundation for all TypeScript projects |
255
+ | **[@presetter/preset-esm](https://github.com/alvis/presetter/blob/main/packages/preset-esm)** | 🚀 ESM-first development | Modern Node.js projects, libraries |
256
+ | **[@presetter/preset-cjs](https://github.com/alvis/presetter/blob/main/packages/preset-cjs)** | 🔗 CommonJS compatibility | Legacy environments, enterprise |
257
+ | **[@presetter/preset-hybrid](https://github.com/alvis/presetter/blob/main/packages/preset-hybrid)** | 🌐 Dual-module packages | npm libraries needing broad compatibility |
243
258
 
244
259
  ### Specialized Extension Presets
245
260
 
246
- | Preset | Purpose | Extends |
247
- | ---------------------------------------------------------------------------------------------------- | --------------------------- | --------------- |
248
- | **[presetter-preset-strict](https://github.com/alvis/presetter/blob/master/packages/preset-strict)** | 🏢 Production-grade quality | Any base preset |
249
- | **[presetter-preset-web](https://github.com/alvis/presetter/blob/master/packages/preset-web)** | 🎨 Modern web development | Any base preset |
250
- | **[presetter-preset-react](https://github.com/alvis/presetter/blob/master/packages/preset-react)** | ⚛️ React development | Any base preset |
251
- | **[presetter-preset-rollup](https://github.com/alvis/presetter/blob/master/packages/preset-rollup)** | 📦 Library bundling | Any base preset |
261
+ | Preset | Purpose | Extends |
262
+ | --------------------------------------------------------------------------------------------------- | --------------------------- | --------------- |
263
+ | **[@presetter/preset-strict](https://github.com/alvis/presetter/blob/main/packages/preset-strict)** | 🏢 Production-grade quality | Any base preset |
264
+ | **[@presetter/preset-web](https://github.com/alvis/presetter/blob/main/packages/preset-web)** | 🎨 Modern web development | Any base preset |
265
+ | **[@presetter/preset-react](https://github.com/alvis/presetter/blob/main/packages/preset-react)** | ⚛️ React development | Any base preset |
266
+ | **[@presetter/preset-rollup](https://github.com/alvis/presetter/blob/main/packages/preset-rollup)** | 📦 Library bundling | Any base preset |
252
267
 
253
268
  ### 🎯 Preset Combination Examples
254
269
 
@@ -301,7 +316,7 @@ Presetter uses a sophisticated **two-pass resolution system** that makes configu
301
316
 
302
317
  ### 🔧 Binary Path Resolution
303
318
 
304
- When running tasks via `run`, `run-s`, or `run-p`, Presetter automatically prepends binary paths from preset packages to the PATH environment variable. This makes tools in each preset's `node_modules/.bin` directory available without additional configuration.
319
+ When running tasks via `run`, `run-s`, or `run-p`, Presetter prepends binary paths from preset packages to the PATH environment variable. This makes tools in each preset's `node_modules/.bin` directory available without additional configuration.
305
320
 
306
321
  **How it works:**
307
322
 
@@ -313,7 +328,7 @@ When running tasks via `run`, `run-s`, or `run-p`, Presetter automatically prepe
313
328
 
314
329
  - No need to install shared dev tools at the repository root
315
330
  - No need for pnpm's `shamefullyHoist: true` or `public-hoist-pattern` for every tool
316
- - Preset dependencies are automatically available to templated scripts
331
+ - Preset dependencies are available to templated scripts through the resolved PATH
317
332
 
318
333
  **Limitation - Dynamic Imports:**
319
334
 
@@ -348,7 +363,7 @@ Libraries loaded via dynamic `import()` may fail because dynamic imports are res
348
363
  ```typescript
349
364
  // presetter.config.ts
350
365
  import { preset } from 'presetter';
351
- import esm from 'presetter-preset-esm';
366
+ import esm from '@presetter/preset-esm';
352
367
 
353
368
  export default preset('my-project', {
354
369
  extends: [esm],
@@ -405,22 +420,22 @@ Combine preset scripts with your local scripts:
405
420
 
406
421
  ### ✅ Developer Experience
407
422
 
408
- - **⚡ Zero-config setup**: One command gets you productive immediately
409
- - **🔄 Consistent updates**: Update all projects by updating preset versions
410
- - **🎯 Best practices**: Configurations follow industry standards and expert recommendations
411
- - **🚀 Composable architecture**: Mix and match presets to build perfect environments
423
+ - **⚡ Repeatable setup**: Adopt a preset stack and generate the expected tool configs
424
+ - **🔄 Consistent updates**: Update projects by updating preset versions
425
+ - **🎯 Recommended baselines**: Configurations follow maintained TypeScript tooling patterns
426
+ - **🚀 Composable architecture**: Mix and match presets to fit each project shape
412
427
 
413
428
  ### ✅ Project Management
414
429
 
415
- - **📦 Dependency reduction**: 40+ packages 2 packages
416
- - **🔧 Maintenance simplification**: Single source of truth for configurations
417
- - **🌐 Team consistency**: Same setup across all team members and projects
418
- - **📈 Scalability**: Manage configurations across dozens of projects effortlessly
430
+ - **📦 Config drift reduction**: Keep shared toolchain intent in `presetter.config.ts`
431
+ - **🔧 Maintenance simplification**: Single source of truth for generated configurations
432
+ - **🌐 Team consistency**: Same baseline across team members and projects
433
+ - **📈 Scalability**: Manage configurations across many repos and monorepo packages
419
434
 
420
435
  ### ✅ Technical Excellence
421
436
 
422
437
  - **🧠 Intelligent merging**: Sophisticated algorithms handle complex configurations
423
- - **🔄 Two-pass resolution**: Initial setup + override for perfect customization
438
+ - **🔄 Two-pass resolution**: Initial setup + override for controlled customization
424
439
  - **📝 Template system**: Dynamic, context-aware configuration generation
425
440
  - **🎛️ Fine-grained control**: Override anything while maintaining preset benefits
426
441
 
@@ -428,11 +443,11 @@ Combine preset scripts with your local scripts:
428
443
 
429
444
  ## 🆚 Alternatives Comparison
430
445
 
431
- | Solution | Setup Time | Maintenance | Consistency | Flexibility | Learning Curve |
432
- | ------------------- | -------------- | ----------- | ----------- | ----------- | -------------- |
433
- | **Manual Setup** | 2-4 hours | High | Poor | Full | High |
434
- | **Boilerplate/CRA** | 5 minutes | Medium | Medium | Limited | Medium |
435
- | **Presetter** | **30 seconds** | **Zero** | **Perfect** | **Full** | **Low** |
446
+ | Solution | Setup Model | Maintenance | Consistency | Flexibility |
447
+ | ------------------- | ---------------------------- | ----------------- | ------------------- | ----------- |
448
+ | **Manual Setup** | Hand-copy each config | Repeated by hand | Drifts easily | Full |
449
+ | **Boilerplate/CRA** | Copy a starter project once | Template ages | Medium | Limited |
450
+ | **Presetter** | Compose presets and generate | Versioned presets | Maintained baseline | Full |
436
451
 
437
452
  ---
438
453
 
@@ -461,7 +476,7 @@ DEBUG=presetter* run build
461
476
 
462
477
  ### How is this different from boilerplates?
463
478
 
464
- Boilerplates copy static files once. Presetter **generates** configurations dynamically and **maintains** them through preset updates. When you update a preset, all projects using it get the improvements automatically.
479
+ Boilerplates copy static files once. Presetter **generates** configurations dynamically and **maintains** them through preset updates. When you update a preset and run `bootstrap`, projects using it can pick up the same improvements.
465
480
 
466
481
  ### Can I customize generated configurations?
467
482
 
@@ -477,11 +492,11 @@ Simply update the preset package version in your projects. Presetter will regene
477
492
 
478
493
  ### Can I create my own presets?
479
494
 
480
- Absolutely! Presets are just npm packages that export configuration templates. See [presetter-types](https://github.com/alvis/presetter/blob/master/packages/types) for TypeScript definitions.
495
+ Absolutely! Presets are just npm packages that export configuration templates. See [@presetter/types](https://github.com/alvis/presetter/blob/main/packages/types) for TypeScript definitions.
481
496
 
482
497
  ### Does this work with monorepos?
483
498
 
484
- Yes! Presetter supports monorepo setups and can bootstrap multiple projects with glob patterns. Use [presetter-preset-monorepo](https://github.com/alvis/presetter/blob/master/packages/preset-monorepo) for monorepo-specific configurations.
499
+ Yes! Presetter supports monorepo setups and can bootstrap multiple projects with glob patterns. Use [@presetter/preset-monorepo](https://github.com/alvis/presetter/blob/main/packages/preset-monorepo) for monorepo-specific configurations.
485
500
 
486
501
  ### Why do some dynamically imported libraries fail to resolve?
487
502
 
@@ -493,13 +508,13 @@ While Presetter makes preset tools available via PATH, libraries loaded through
493
508
 
494
509
  We'd love your ideas and contributions!
495
510
  Submit issues or suggestions via [GitHub Issues](https://github.com/alvis/presetter/issues).
496
- See the [Contribution Guide](https://github.com/alvis/presetter/blob/master/CONTRIBUTING.md) for more details.
511
+ See the [Contribution Guide](https://github.com/alvis/presetter/blob/main/CONTRIBUTING.md) for more details.
497
512
 
498
513
  ---
499
514
 
500
515
  ## 📄 License
501
516
 
502
- Released under the [MIT License](https://github.com/alvis/presetter/blob/master/LICENSE).
517
+ Released under the [MIT License](https://github.com/alvis/presetter/blob/main/LICENSE).
503
518
  © 2020, [Alvis Tang](https://github.com/alvis).
504
519
 
505
- [![License](https://img.shields.io/github/license/alvis/presetter.svg?style=flat-square)](https://github.com/alvis/presetter/blob/master/LICENSE)
520
+ [![License](https://img.shields.io/github/license/alvis/presetter.svg?style=flat-square)](https://github.com/alvis/presetter/blob/main/LICENSE)
package/lib/context.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ProjectContext } from 'presetter-types';
1
+ import type { ProjectContext } from '@presetter/types';
2
2
  /**
3
3
  * get scripts from the targeted project's package.json
4
4
  * @param cwd path to the project's root folder
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAgCzB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe7B"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,cAAc,CAAC,CAgCzB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../src/debugger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;;AAE1B,wBAAkC"}
1
+ {"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../src/debugger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC"}
@@ -1,7 +1,26 @@
1
+ interface ResolveProjectRootsOptions {
2
+ readonly projects: readonly string[];
3
+ readonly packages: readonly string[];
4
+ }
1
5
  /**
2
6
  * provide a command line interface
3
7
  * @param args command line arguments
4
- * @returns the command entered together with its options
5
8
  */
6
9
  export declare function entry(args: string[]): Promise<void>;
10
+ /**
11
+ * resolve target project roots from path globs and package-name globs
12
+ * @param options resolution inputs
13
+ * @param options.projects path globs (e.g. `presets/next`, `packages/*`)
14
+ * @param options.packages package-name globs (e.g. `@presetter/preset-*`)
15
+ * @returns deduped absolute project root paths
16
+ */
17
+ export declare function resolveProjectRoots(options: ResolveProjectRootsOptions): Promise<string[]>;
18
+ /**
19
+ * expand each entry by splitting on a delimiter and trimming the parts
20
+ * @param values raw flag values, each possibly containing the delimiter
21
+ * @param delimiter delimiter character (defaults to `,`)
22
+ * @returns flattened, trimmed, non-empty values
23
+ */
24
+ export declare function expandDelimitedValues(values: readonly string[], delimiter?: string): string[];
25
+ export {};
7
26
  //# sourceMappingURL=entry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/executable/entry.ts"],"names":[],"mappings":"AA+GA;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAezD"}
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../src/executable/entry.ts"],"names":[],"mappings":"AAmBA,UAAU,0BAA0B;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AA8GD;;;GAGG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAezD;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CA+BnB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,SAAS,GAAE,MAA+B,GACzC,MAAM,EAAE,CAOV"}
@@ -1,10 +1,15 @@
1
- import { existsSync } from 'node:fs';
1
+ import { existsSync, readFileSync } from 'node:fs';
2
2
  import { dirname, posix, resolve } from 'node:path';
3
3
  import { globby } from 'globby';
4
4
  import yargs from 'yargs';
5
5
  import { bootstrap } from '../preset/index.js';
6
6
  import { run } from '../run.js';
7
7
  import { parseGlobalArgs, parseTaskSpec } from '../task.js';
8
+ const DEFAULT_LIST_DELIMITER = ',';
9
+ const WORKSPACE_GLOB_OPTIONS = {
10
+ gitignore: true,
11
+ ignore: ['**/node_modules/**'],
12
+ };
8
13
  const bootstrapCommand = {
9
14
  command: 'bootstrap',
10
15
  describe: 'setup the project according to the specified preset',
@@ -18,23 +23,26 @@ const bootstrapCommand = {
18
23
  alias: 'p',
19
24
  array: true,
20
25
  default: ['.'],
21
- description: 'a glob pattern matching any target project folders containing package.json',
26
+ coerce: (values) => expandDelimitedValues(values),
27
+ description: 'a glob pattern matching any target project folders containing package.json (comma-separated values supported)',
28
+ })
29
+ .option('packages', {
30
+ type: 'string',
31
+ alias: 'P',
32
+ array: true,
33
+ default: [],
34
+ coerce: (values) => expandDelimitedValues(values),
35
+ description: 'a glob pattern matching any target package names (e.g. @presetter/preset-*; comma-separated values supported)',
22
36
  })
23
37
  .help(),
24
38
  handler: async (argv) => {
25
- const { only, projects } = argv;
26
- // only proceed if the specified file exists
27
- if (!only || existsSync(only)) {
28
- // look for all projects by looking for the `preset.json` file
29
- const packageJsons = await globby(projects.map((project) => posix.join(project, 'package.json')), {
30
- gitignore: true,
31
- ignore: ['**/node_modules/**'],
32
- });
33
- const projectRoots = packageJsons.map(dirname);
34
- // bootstrap all projects
35
- for (const root of projectRoots) {
36
- await bootstrap(resolve(root));
37
- }
39
+ const { only, projects, packages } = argv;
40
+ if (only && !existsSync(only)) {
41
+ return;
42
+ }
43
+ const projectRoots = await resolveProjectRoots({ projects, packages });
44
+ for (const root of projectRoots) {
45
+ await bootstrap(root);
38
46
  }
39
47
  },
40
48
  };
@@ -50,7 +58,6 @@ const runCommand = {
50
58
  .usage('run <task>')
51
59
  .demandCommand(),
52
60
  handler: async (argv) => {
53
- // get the options
54
61
  const [, selector] = argv._.map((arg) => arg.toString());
55
62
  const args = parseGlobalArgs(argv);
56
63
  await run([{ selector, args }], { templateOnly: argv.template });
@@ -81,7 +88,6 @@ const runPCommand = {
81
88
  /**
82
89
  * provide a command line interface
83
90
  * @param args command line arguments
84
- * @returns the command entered together with its options
85
91
  */
86
92
  export async function entry(args) {
87
93
  await yargs()
@@ -98,4 +104,58 @@ export async function entry(args) {
98
104
  .demandCommand()
99
105
  .parse(args);
100
106
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhlY3V0YWJsZS9lbnRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFJekQsTUFBTSxnQkFBZ0IsR0FHbEI7SUFDRixPQUFPLEVBQUUsV0FBVztJQUNwQixRQUFRLEVBQUUscURBQXFEO0lBQy9ELE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2pCLEtBQUs7U0FDRixNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2QsSUFBSSxFQUFFLFFBQVE7UUFDZCxXQUFXLEVBQUUsMkNBQTJDO0tBQ3pELENBQUM7U0FDRCxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ2xCLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLEdBQUc7UUFDVixLQUFLLEVBQUUsSUFBSTtRQUNYLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNkLFdBQVcsRUFDVCw0RUFBNEU7S0FDL0UsQ0FBQztTQUNELElBQUksRUFBRTtJQUNYLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdEIsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFaEMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxJQUFJ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
107
+ /**
108
+ * resolve target project roots from path globs and package-name globs
109
+ * @param options resolution inputs
110
+ * @param options.projects path globs (e.g. `presets/next`, `packages/*`)
111
+ * @param options.packages package-name globs (e.g. `@presetter/preset-*`)
112
+ * @returns deduped absolute project root paths
113
+ */
114
+ export async function resolveProjectRoots(options) {
115
+ const { projects, packages } = options;
116
+ const roots = new Set();
117
+ if (projects.length > 0) {
118
+ const files = await globby(projects.map((project) => posix.join(project, 'package.json')), WORKSPACE_GLOB_OPTIONS);
119
+ for (const file of files) {
120
+ roots.add(resolve(dirname(file)));
121
+ }
122
+ }
123
+ if (packages.length > 0) {
124
+ const candidates = await globby('**/package.json', WORKSPACE_GLOB_OPTIONS);
125
+ const isMatchingName = compileNameMatcher(packages);
126
+ await Promise.all(candidates.map(async (path) => {
127
+ const { name } = JSON.parse(readFileSync(path, { encoding: 'utf8' }));
128
+ if (name && isMatchingName(name)) {
129
+ roots.add(resolve(dirname(path)));
130
+ }
131
+ }));
132
+ }
133
+ return [...roots];
134
+ }
135
+ /**
136
+ * expand each entry by splitting on a delimiter and trimming the parts
137
+ * @param values raw flag values, each possibly containing the delimiter
138
+ * @param delimiter delimiter character (defaults to `,`)
139
+ * @returns flattened, trimmed, non-empty values
140
+ */
141
+ export function expandDelimitedValues(values, delimiter = DEFAULT_LIST_DELIMITER) {
142
+ return values.flatMap((value) => value
143
+ .split(delimiter)
144
+ .map((part) => part.trim())
145
+ .filter(Boolean));
146
+ }
147
+ /**
148
+ * compile a list of package-name globs into a single predicate
149
+ * @param patterns package-name globs (`*` matches anything except `/`)
150
+ * @returns predicate returning true when a name matches any pattern
151
+ */
152
+ function compileNameMatcher(patterns) {
153
+ const expressions = patterns.map((pattern) => {
154
+ const escaped = pattern
155
+ .replace(/[.+?^${}()|[\]\\]/g, '\\$&')
156
+ .replace(/\*/g, '[^/]*');
157
+ return new RegExp(`^${escaped}$`);
158
+ });
159
+ return (name) => expressions.some((expression) => expression.test(name));
160
+ }
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhlY3V0YWJsZS9lbnRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBZ0J6RCxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLHNCQUFzQixHQUFHO0lBQzdCLFNBQVMsRUFBRSxJQUFJO0lBQ2YsTUFBTSxFQUFFLENBQUMsb0JBQW9CLENBQUM7Q0FDL0IsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBR2xCO0lBQ0YsT0FBTyxFQUFFLFdBQVc7SUFDcEIsUUFBUSxFQUFFLHFEQUFxRDtJQUMvRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNqQixLQUFLO1NBQ0YsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNkLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLDJDQUEyQztLQUN6RCxDQUFDO1NBQ0QsTUFBTSxDQUFDLFVBQVUsRUFBRTtRQUNsQixJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxHQUFHO1FBQ1YsS0FBSyxFQUFFLElBQUk7UUFDWCxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDZCxNQUFNLEVBQUUsQ0FBQyxNQUFnQixFQUFZLEVBQUUsQ0FBQyxx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
package/lib/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export * from 'presetter-types';
2
- export * from './preset/index.js';
3
- export * from './resolve.js';
4
- export * from './run.js';
5
- export * from './template/index.js';
1
+ export * from '@presetter/types';
2
+ export * from '#preset';
3
+ export * from '#resolve';
4
+ export * from '#run';
5
+ export * from '#template';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAEhC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,kBAAkB,CAAC;AAEjC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC;AACrB,cAAc,WAAW,CAAC"}