@dbx-tools/projen 0.9.131 → 0.9.136
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.
- package/README.md +143 -89
- package/index.ts +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# @dbx-tools/projen
|
|
2
2
|
|
|
3
|
-
Projen engine
|
|
3
|
+
Use this Projen engine from `.projenrc.ts` to discover packages and generate
|
|
4
|
+
manifests, tsconfigs, barrels, schemas, and release tasks for Bun-first
|
|
5
|
+
dbx-tools workspaces.
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
manifests, tsconfigs, barrels, code generation, and release tasks.
|
|
7
|
-
|
|
8
|
-
## Define A Workspace Root
|
|
7
|
+
## Define a workspace root
|
|
9
8
|
|
|
10
9
|
```ts
|
|
11
10
|
import { project } from "@dbx-tools/projen";
|
|
@@ -49,7 +48,7 @@ Repository policy stays in the consuming `.projenrc.ts`:
|
|
|
49
48
|
- `releaseDocs` supplies repository-defined preparation and build steps plus
|
|
50
49
|
the Pages artifact path. The engine adds release checkout, artifact upload,
|
|
51
50
|
and deployment without naming a docs script or output tree.
|
|
52
|
-
- `releasePythonRoot` passes the
|
|
51
|
+
- `releasePythonRoot` passes the configured Python package root to local release
|
|
53
52
|
preparation. Omit it when the workspace has no standard Python packages.
|
|
54
53
|
- `releaseValidationTasks` names repository tasks that must pass in tag CI
|
|
55
54
|
before release artifacts are built and published.
|
|
@@ -71,7 +70,7 @@ The engine treats generated barrels, tests, declaration files, and folders
|
|
|
71
70
|
without exported source modules as implementation details. They do not create
|
|
72
71
|
new package membership.
|
|
73
72
|
|
|
74
|
-
## Add
|
|
73
|
+
## Add a Python uv workspace
|
|
75
74
|
|
|
76
75
|
`DBXToolsPythonWorkspace` attaches Python packaging to an existing projen root
|
|
77
76
|
without turning Python packages into JavaScript workspace projects. It generates
|
|
@@ -108,11 +107,11 @@ Distribution names and modules come from the parent scope plus each package
|
|
|
108
107
|
directory. The repository comes from the parent project metadata or Git remote.
|
|
109
108
|
`internalDependencies` renders standalone Git `#subdirectory=` requirements
|
|
110
109
|
without repeating repository coordinates. Pass `repository`, `name`, or
|
|
111
|
-
`module` only to override those conventions. `root.vscode` is
|
|
112
|
-
VS Code component
|
|
110
|
+
`module` only to override those conventions. `root.vscode` is Projen's existing
|
|
111
|
+
VS Code component. dbx-tools reuses it rather than constructing a second
|
|
113
112
|
`.vscode/settings.json` owner.
|
|
114
113
|
|
|
115
|
-
### Bundle Node
|
|
114
|
+
### Bundle Node code for PythonMonkey
|
|
116
115
|
|
|
117
116
|
Add `nodeBindings` to any `DBXToolsPythonWorkspace` package to generate
|
|
118
117
|
committed CommonJS runtimes and Python wrappers from public Node packages. Pass
|
|
@@ -122,7 +121,11 @@ one binding object or an array. Projen writes one
|
|
|
122
121
|
in consuming repositories after `@dbx-tools/projen` is installed.
|
|
123
122
|
|
|
124
123
|
```ts
|
|
125
|
-
|
|
124
|
+
import { project, projectPy } from "@dbx-tools/projen";
|
|
125
|
+
|
|
126
|
+
const root = new project.DBXToolsNodeProject({ name: "my-apps" });
|
|
127
|
+
|
|
128
|
+
new projectPy.DBXToolsPythonWorkspace(root, {
|
|
126
129
|
root: "packages/py",
|
|
127
130
|
packages: [
|
|
128
131
|
{
|
|
@@ -152,7 +155,7 @@ new project.DBXToolsPythonWorkspace(root, {
|
|
|
152
155
|
|
|
153
156
|
Bindings always live under
|
|
154
157
|
`<python-module>/_generated/node/`. Each Python package receives one shared
|
|
155
|
-
`_runtime.js
|
|
158
|
+
`_runtime.js`. Typed wrappers live under `<node-package>/<module>.py`. This
|
|
156
159
|
preserves Node module singleton identity across all bindings in the Python
|
|
157
160
|
process. The intermediate directories remain implicit namespace packages with
|
|
158
161
|
no generated `__init__.py`. Omit `modules` to discover every exported package
|
|
@@ -216,31 +219,42 @@ created. Full synthesis regenerates every binding and reconciles stale
|
|
|
216
219
|
Built-in shims can make ordinary Node imports work under PythonMonkey.
|
|
217
220
|
`functionOverrides` replaces named exports only in the generated runtime, so the
|
|
218
221
|
Node package does not gain Python callbacks or alternate source files. A
|
|
219
|
-
replacement may use a different export name through `handlerExport
|
|
222
|
+
replacement may use a different export name through `handlerExport`. Every
|
|
220
223
|
other export continues to come from the original module.
|
|
221
224
|
|
|
222
|
-
### Synchronize
|
|
225
|
+
### Synchronize pinned Python sources
|
|
223
226
|
|
|
224
227
|
Use a package's `sync` field when published Python code must include a reviewed
|
|
225
228
|
subset of a Git repository instead of exposing a direct URL dependency:
|
|
226
229
|
|
|
227
230
|
```ts
|
|
228
|
-
{
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
231
|
+
import { project, projectPy } from "@dbx-tools/projen";
|
|
232
|
+
|
|
233
|
+
const root = new project.DBXToolsNodeProject({ name: "my-apps" });
|
|
234
|
+
|
|
235
|
+
new projectPy.DBXToolsPythonWorkspace(root, {
|
|
236
|
+
root: "packages/py",
|
|
237
|
+
packages: [
|
|
232
238
|
{
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
239
|
+
directory: "service",
|
|
240
|
+
description: "Python service with synchronized upstream code",
|
|
241
|
+
sync: [
|
|
242
|
+
{
|
|
243
|
+
name: "upstream_driver",
|
|
244
|
+
source:
|
|
245
|
+
"driver @ git+https://github.com/example/project.git@0123456789abcdef0123456789abcdef01234567#subdirectory=src/driver",
|
|
246
|
+
include: ["driver.py", "operations/**/*.py"],
|
|
247
|
+
exclude: ["**/test_*.py"],
|
|
248
|
+
replace: {
|
|
249
|
+
"DEFAULT_TIMEOUT = 30": "DEFAULT_TIMEOUT = 120",
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
],
|
|
241
253
|
},
|
|
242
254
|
],
|
|
243
|
-
}
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
root.synth();
|
|
244
258
|
```
|
|
245
259
|
|
|
246
260
|
Each source is written beneath
|
|
@@ -263,9 +277,9 @@ Synchronization uses a check-lock-check sequence and an atomic directory
|
|
|
263
277
|
replacement. A current pinned commit performs no network request. Branches and
|
|
264
278
|
tags use `git ls-remote` to detect upstream movement. Run the generated
|
|
265
279
|
`<package>:python-sync:check` task in validation, or pass `--force` to refresh a
|
|
266
|
-
|
|
280
|
+
pinned source intentionally.
|
|
267
281
|
|
|
268
|
-
## Customize
|
|
282
|
+
## Customize packages with mixins
|
|
269
283
|
|
|
270
284
|
```ts
|
|
271
285
|
import { project } from "@dbx-tools/projen";
|
|
@@ -283,9 +297,10 @@ Use `projectJs.addOptionalPeer(pkg, specifier)` for an optional peer that must
|
|
|
283
297
|
also resolve during local development. It writes the peer metadata and matching
|
|
284
298
|
development dependency without turning the peer into a runtime dependency.
|
|
285
299
|
|
|
286
|
-
`applyToProjects`
|
|
287
|
-
predicate
|
|
288
|
-
mixin across the subtree. Filter on the folder
|
|
300
|
+
`applyToProjects` combines its globs with AND logic. Prefix a glob with `!` to
|
|
301
|
+
negate it. The resulting predicate selects DBXTools child packages and applies
|
|
302
|
+
the callback as a `constructs` mixin across the subtree. Filter on the folder
|
|
303
|
+
(`path`), the tags (`tags`), or
|
|
289
304
|
the name from whichever angle fits: `name` matches the raw projen name verbatim,
|
|
290
305
|
while `identifierPackageName`, `identifierScope`, and `identifierName` match the
|
|
291
306
|
parsed `@scope/name`, its scope, and its unscoped half. Two flags widen the
|
|
@@ -300,33 +315,34 @@ scripts, and generated files on top.
|
|
|
300
315
|
|
|
301
316
|
Every workspace root exposes a generic development watcher:
|
|
302
317
|
|
|
303
|
-
```
|
|
318
|
+
```bash
|
|
304
319
|
bun run dev:watch [--debounce-ms 15000] [--restart-key r] <command> [args...]
|
|
305
320
|
```
|
|
306
321
|
|
|
307
322
|
It restarts after watched writes have been quiet for 15 seconds. Command paths,
|
|
308
|
-
`--cwd`, and `--filter` identify the owning package
|
|
323
|
+
`--cwd`, and `--filter` identify the owning package. Its transitive workspace
|
|
309
324
|
dependencies are watched with the shared generated/dependency/test/temp ignores.
|
|
310
325
|
Press the configured key for an immediate restart. The demo uses this task to
|
|
311
|
-
run its concrete server entrypoint
|
|
326
|
+
run its concrete server entrypoint. The `server` tag does not assume one.
|
|
312
327
|
|
|
313
328
|
AppKit 0.81's `appkitServerConfig()` is the preferred tsdown preset for a
|
|
314
329
|
consumer app using conventional compiled `server/agents/*/agent.ts` entries. It
|
|
315
330
|
does not replace this engine's package discovery, Bun browser build, source-run
|
|
316
331
|
server, publication, or Databricks deployment staging.
|
|
317
332
|
|
|
318
|
-
A tag layers over a shared compiler floor every package
|
|
319
|
-
ES2022 plus the web-platform globals available in every runtime,
|
|
320
|
-
no DOM
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
333
|
+
A tag layers over a shared compiler floor that every package receives at
|
|
334
|
+
construction: ES2022 plus the web-platform globals available in every runtime,
|
|
335
|
+
with no DOM library and no Node types. The tags add an environment on top.
|
|
336
|
+
`node` adds Node types, and `ui` adds the DOM library. The shared floor also
|
|
337
|
+
sets `jsx`.
|
|
338
|
+
|
|
339
|
+
Packages resolve each other to source, so a consumer type-checks its
|
|
340
|
+
dependency's files under its own tsconfig. If any package re-exports a `.tsx`
|
|
341
|
+
module, every transitive importer fails with
|
|
342
|
+
`TS6142: ... but '--jsx' is not set`. The consumer doesn't author that JSX and
|
|
343
|
+
can't track when a dependency starts exporting it, so the compiler floor owns
|
|
344
|
+
the setting. The option is inert without JSX in the graph. It selects how JSX
|
|
345
|
+
syntax compiles without adding a library, global, or type dependency.
|
|
330
346
|
|
|
331
347
|
Keep the generated tsconfigs package-local. Each package build config owns its
|
|
332
348
|
`rootDir`, declaration output, package-specific globals, and publish boundary.
|
|
@@ -344,7 +360,7 @@ installation runs only when the generated root manifest changes or
|
|
|
344
360
|
`node_modules` is absent. Repository discovery is process-cached so every child
|
|
345
361
|
package reuses the root probe instead of invoking `git`, `ssh`, and `gh` again.
|
|
346
362
|
|
|
347
|
-
## Work
|
|
363
|
+
## Work with package discovery
|
|
348
364
|
|
|
349
365
|
```ts
|
|
350
366
|
import { packages } from "@dbx-tools/projen";
|
|
@@ -358,7 +374,7 @@ the generated `pnpm-workspace.yaml` plus package manifests for post-synth tools.
|
|
|
358
374
|
Use the latter for docs, linting, and release checks that should match the
|
|
359
375
|
recorded workspace.
|
|
360
376
|
|
|
361
|
-
## Generate
|
|
377
|
+
## Generate barrels and code generation
|
|
362
378
|
|
|
363
379
|
```ts
|
|
364
380
|
import { barrels, codegen } from "@dbx-tools/projen";
|
|
@@ -370,13 +386,19 @@ barrels.generateBarrels();
|
|
|
370
386
|
Add declaration inputs through the owning package's typed config:
|
|
371
387
|
|
|
372
388
|
```ts
|
|
373
|
-
|
|
389
|
+
import { project } from "@dbx-tools/projen";
|
|
390
|
+
|
|
391
|
+
const rootProject = new project.DBXToolsNodeProject({ name: "my-apps" });
|
|
392
|
+
project.applyToProjects(rootProject, { path: "packages/shared/generated" }, (pkg) => {
|
|
393
|
+
pkg.dbxToolsConfig.codegenInputs.push("node_modules/example/model.d.ts");
|
|
394
|
+
});
|
|
395
|
+
rootProject.synth();
|
|
374
396
|
```
|
|
375
397
|
|
|
376
398
|
`generateCodegen()` reads the serialized `dbxToolsConfig.codegenInputs` and
|
|
377
399
|
writes generated schema modules. They are written read-only, and the root
|
|
378
400
|
ESLint task runs with an explicit separate fix task, so each generated module is
|
|
379
|
-
added to `ignorePatterns` at synth - named individually
|
|
401
|
+
added to `ignorePatterns` at synth - named individually using
|
|
380
402
|
`codegen.codegenModulePaths()`, never as a blanket `<package>/src/**`. A codegen
|
|
381
403
|
package may hold hand-written modules beside its generated ones, and those must
|
|
382
404
|
stay linted.
|
|
@@ -389,56 +411,88 @@ source directories. For example, `src/example/one.ts` becomes importable through
|
|
|
389
411
|
generated surface at the package root or any nested level. Existing hand-written
|
|
390
412
|
`index.ts` entrypoints remain authoritative.
|
|
391
413
|
|
|
392
|
-
Generated barrels include module namespaces and flat unique type/value exports
|
|
393
|
-
|
|
414
|
+
Generated barrels include module namespaces and flat unique type/value exports.
|
|
415
|
+
The package root additionally exposes `PACKAGE_IDENTIFIER`. A name two modules
|
|
394
416
|
both declare is ambiguous and stays namespace-only, except when one is generated:
|
|
395
417
|
the hand-written module is the curated view of the generated shape
|
|
396
418
|
(`shared-genie`'s `genie-model.ts` extends its own codegen'd `dashboards.ts`), so
|
|
397
419
|
it owns the name and stays hoisted. An unchanged barrel remains untouched,
|
|
398
420
|
including its read-only bit, so concurrent writers do not collide. Every package
|
|
399
|
-
is attempted even if one fails
|
|
421
|
+
is attempted even if one fails. Failures are re-thrown together as an
|
|
400
422
|
`AggregateError` naming each package.
|
|
401
423
|
|
|
402
|
-
## Configure pnpm
|
|
424
|
+
## Configure pnpm catalogs
|
|
403
425
|
|
|
404
426
|
```ts
|
|
405
|
-
project
|
|
406
|
-
|
|
427
|
+
import { project } from "@dbx-tools/projen";
|
|
428
|
+
|
|
429
|
+
const rootProject = new project.DBXToolsNodeProject({ name: "my-apps" });
|
|
430
|
+
rootProject.pnpmWorkspace?.addCatalog("react", "^19");
|
|
431
|
+
rootProject.pnpmWorkspace?.allowBuild("esbuild");
|
|
407
432
|
```
|
|
408
433
|
|
|
409
|
-
|
|
434
|
+
Projen's native `javascript.PnpmWorkspaceYaml` writes `pnpm-workspace.yaml`.
|
|
410
435
|
`pnpmWorkspace.PnpmWorkspaceState` supplies the options it renders and tracks
|
|
411
436
|
package members, catalog entries, and build-script allowances. Any other pnpm
|
|
412
437
|
setting goes through the root's `workspaceYaml` option, which is projen's typed
|
|
413
438
|
`PnpmWorkspaceYamlOptions`:
|
|
414
439
|
|
|
415
440
|
```ts
|
|
416
|
-
|
|
441
|
+
import { project } from "@dbx-tools/projen";
|
|
442
|
+
|
|
443
|
+
const rootProject = new project.DBXToolsNodeProject({
|
|
444
|
+
name: "my-apps",
|
|
445
|
+
pnpmOptions: {
|
|
446
|
+
workspaceYamlOptions: {
|
|
447
|
+
overrides: { glob: "^13.0.0" },
|
|
448
|
+
},
|
|
449
|
+
},
|
|
450
|
+
});
|
|
451
|
+
rootProject.synth();
|
|
417
452
|
```
|
|
418
453
|
|
|
419
454
|
`allowBuild` writes pnpm's `allowBuilds` map rather than projen's own
|
|
420
455
|
`allowScripts` option, which for pnpm renders `onlyBuiltDependencies` - a key
|
|
421
|
-
|
|
422
|
-
Only allowances are declared
|
|
456
|
+
pnpm does not read, so the list would leave every build script skipped.
|
|
457
|
+
Only allowances are declared. A dependency that is never allowed needs no entry
|
|
423
458
|
because pnpm warns and moves on.
|
|
424
459
|
|
|
425
|
-
The engine also applies `catalogMode: manual
|
|
426
|
-
generated catalog
|
|
427
|
-
tree
|
|
460
|
+
The engine also applies `catalogMode: manual`, which keeps `pnpm add` out of the
|
|
461
|
+
generated catalog, and `verifyDepsBeforeRun: warn`. The file is emitted for the
|
|
462
|
+
tree root only. A member package never gets a nested one.
|
|
428
463
|
|
|
429
|
-
## Clean
|
|
464
|
+
## Clean and watch generated files
|
|
430
465
|
|
|
431
466
|
```ts
|
|
432
467
|
import { clean, watch } from "@dbx-tools/projen";
|
|
433
468
|
|
|
434
|
-
const generated = clean.listGeneratedFiles();
|
|
435
|
-
|
|
469
|
+
const generated = await clean.listGeneratedFiles();
|
|
470
|
+
const roots = watch.watchRoots();
|
|
436
471
|
```
|
|
437
472
|
|
|
438
473
|
Use these modules for maintenance tasks that should follow the same generated
|
|
439
|
-
file contract as the CLI.
|
|
440
|
-
|
|
441
|
-
|
|
474
|
+
file contract as the CLI. `watch.watchLoop()` accepts these roots and an
|
|
475
|
+
application-specific callback.
|
|
476
|
+
|
|
477
|
+
## Understand generation limits
|
|
478
|
+
|
|
479
|
+
- Change `.projenrc.ts` or another owning configuration source, then run
|
|
480
|
+
`bun run sync` from the workspace root. Don't hand-edit generated files.
|
|
481
|
+
- Synthesis is a whole-tree operation. Don't run `bunx projen` or
|
|
482
|
+
`projen default` from a member package.
|
|
483
|
+
- `packageRoots` discovery creates a package for each source-bearing directory.
|
|
484
|
+
Generated folders, tests, and declaration-only folders don't create members.
|
|
485
|
+
- A single workspace version comes from `VERSION`. JavaScript and Python
|
|
486
|
+
manifests reproduce it during synthesis.
|
|
487
|
+
- Python Node bindings support public functions and representable TypeScript
|
|
488
|
+
types. Generation fails with a property path when a type can't be converted
|
|
489
|
+
safely.
|
|
490
|
+
- Source synchronization requires a pinned Git source for reproducible
|
|
491
|
+
publication. Branches and tags require a network lookup to detect movement.
|
|
492
|
+
- Release commands commit and push changes, tags, and selected publication
|
|
493
|
+
artifacts. Review release options before you run `bun run release`.
|
|
494
|
+
|
|
495
|
+
## Use package modules
|
|
442
496
|
|
|
443
497
|
- `project` - `DBXToolsNodeProject`, `DBXToolsTypeScriptProject`, package naming,
|
|
444
498
|
compiler/task helpers.
|
|
@@ -455,17 +509,17 @@ file contract as the CLI.
|
|
|
455
509
|
- `publish` - packaging and tag-based release helpers.
|
|
456
510
|
- `engineRoot` - engine package root resolution for bootstrapped repos.
|
|
457
511
|
|
|
458
|
-
The engine registers its commands as
|
|
459
|
-
them with `bun run <task
|
|
512
|
+
The engine registers its commands as Projen tasks on the workspace root, so run
|
|
513
|
+
them with `bun run <task>`, including `sync` (add `--watch`), `barrels`, `clean`, and the
|
|
460
514
|
configured `python-node-bindings:*` and `python-node-runtime:*` lifecycles.
|
|
461
|
-
[
|
|
515
|
+
[@dbx-tools/cli](../packages/js/cli/dbx-tools/README.md) is only needed to
|
|
462
516
|
bootstrap a folder that has no `.projenrc.ts` or toolchain yet.
|
|
463
517
|
|
|
464
|
-
## Run
|
|
518
|
+
## Run tasks from the root
|
|
465
519
|
|
|
466
520
|
Every repo-wide task lives on the root. `compile` batches package tsconfigs in
|
|
467
521
|
up to four `tsc --build` processes and runs package-owned compile lifecycles
|
|
468
|
-
alongside them
|
|
522
|
+
alongside them. `test` delegates with `bun run --filter '*'`. Both read the
|
|
469
523
|
current workspace list, so a new package is covered without a re-synth. Work
|
|
470
524
|
from the root:
|
|
471
525
|
|
|
@@ -482,14 +536,14 @@ from the root:
|
|
|
482
536
|
|
|
483
537
|
Run `bun run release` from any branch. Pending changes are committed and
|
|
484
538
|
the current branch is pushed first. A non-`main` branch then fast-forwards
|
|
485
|
-
`main
|
|
539
|
+
`main`. The command fails without creating a merge commit if either branch has
|
|
486
540
|
diverged. From `main`, it calls the existing `bump` task, commits the generated
|
|
487
541
|
version changes, pushes `main`, and pushes the matching annotated `vX.Y.Z` tag.
|
|
488
542
|
Pass `--no-bump` only to release an existing synchronized local bump. The tag
|
|
489
543
|
workflow verifies that the tag points at the exact `origin/main` commit. One
|
|
490
544
|
`build-release` job installs workspace dependencies, runs validation, packs the
|
|
491
545
|
npm archives, builds all Python distributions, and builds the documentation
|
|
492
|
-
site. Install validation prerequisites through `releaseSetupSteps
|
|
546
|
+
site. Install validation prerequisites through `releaseSetupSteps`.
|
|
493
547
|
`releaseDocs.prepareSteps` runs after validation.
|
|
494
548
|
|
|
495
549
|
Publication jobs download the resulting artifacts rather than rebuilding the
|
|
@@ -503,12 +557,12 @@ The default release still publishes npm, Python, and docs, then publishes to
|
|
|
503
557
|
configured local registries automatically. Select a scope or disable individual
|
|
504
558
|
steps for one run without changing the Projen definition:
|
|
505
559
|
|
|
506
|
-
```
|
|
560
|
+
```bash
|
|
507
561
|
bun run release --publish pypi --no-docs
|
|
508
562
|
bun run release --no-npm --no-local-publish
|
|
509
563
|
bun run release --publish local --install never
|
|
510
564
|
bun run release --local-registry false --local-pypi auto
|
|
511
|
-
bun run release --demo-deploy --profile
|
|
565
|
+
bun run release --demo-deploy --profile <profile>
|
|
512
566
|
bun run release --no-release-notes
|
|
513
567
|
bun run release --release-notes-text "# Release 1.2.3"
|
|
514
568
|
bun run release --release-notes-file ./notes.md
|
|
@@ -541,11 +595,11 @@ Genie prompt. Notes are committed with the version bump and are not recorded in
|
|
|
541
595
|
the annotated tag. They are skipped on `--no-bump` because that path requires an
|
|
542
596
|
already committed tree.
|
|
543
597
|
|
|
544
|
-
`--install auto` keeps Projen's normal local dependency-install behavior
|
|
598
|
+
`--install auto` keeps Projen's normal local dependency-install behavior.
|
|
545
599
|
`always` performs a manifest-resolved install first, and `never` uses dependencies already
|
|
546
600
|
installed while still regenerating versioned sources. Local release validation
|
|
547
601
|
runs `eslint:fix` before branch preparation and bump, then runs the selected
|
|
548
|
-
fail-closed tasks
|
|
602
|
+
fail-closed tasks. CI remains check-only.
|
|
549
603
|
CI rebuilds the selected release artifacts instead of checking generated-source fingerprints.
|
|
550
604
|
`--no-validation` skips optional task checks locally and in CI, not workspace-version or immutable-source checks.
|
|
551
605
|
`--no-docs` skips building and deploying the site, not package README validation.
|
|
@@ -553,12 +607,12 @@ Scopes select artifacts, not the normal commit and tag-push transaction.
|
|
|
553
607
|
The annotated tag records CI step selections, so publishing a selected scope does
|
|
554
608
|
not change the next release's defaults. Local registry URLs stay local.
|
|
555
609
|
|
|
556
|
-
Members
|
|
557
|
-
|
|
610
|
+
Members keep only tasks that repository automation invokes, so there is no
|
|
611
|
+
second place for a contributor to run the same operation:
|
|
558
612
|
|
|
559
613
|
- `compile` / `test` - what the root's `--filter '*'` delegation calls.
|
|
560
614
|
- `prepack` - standalone-publish safety that compiles one package before packing
|
|
561
|
-
when that package has a compiled publication surface
|
|
615
|
+
when that package has a compiled publication surface. The workspace release
|
|
562
616
|
driver compiles from the root and publishes with lifecycle scripts disabled.
|
|
563
617
|
- `watch` - a single-package `tsc --build -w`, for narrowing a long
|
|
564
618
|
edit/compile loop to one package.
|
|
@@ -566,18 +620,18 @@ invokes, so there is no second place to run the same thing:
|
|
|
566
620
|
one package. Release preparation validates through the root's filtered tasks,
|
|
567
621
|
and publication uploads archives that were each packed and
|
|
568
622
|
validated once with lifecycle scripts disabled. The package phase also packs
|
|
569
|
-
with `--ignore-scripts` because its build already compiled
|
|
623
|
+
with `--ignore-scripts` because its build already compiled. `prepack` remains
|
|
570
624
|
available for a standalone publish that did not run `build` first.
|
|
571
625
|
- `install` / `install:ci` / `default` / `pre-compile` / `post-compile` -
|
|
572
626
|
projen's lifecycle scaffolding, emitted for every member because its task model
|
|
573
627
|
expects them.
|
|
574
628
|
|
|
575
|
-
|
|
576
|
-
whole-tree operation driven by the
|
|
629
|
+
Don't run `projen default` or `bunx projen` from inside a member. Synthesis is a
|
|
630
|
+
whole-tree operation driven by the root `.projenrc.ts`, so a member-level run
|
|
577
631
|
re-synths the entire workspace from the member's directory. Run `bun run sync`
|
|
578
632
|
from the root instead.
|
|
579
633
|
|
|
580
|
-
##
|
|
634
|
+
## Manage workspace versions
|
|
581
635
|
|
|
582
636
|
`VERSION` is the language-neutral version seam. Real package manifests remain
|
|
583
637
|
Projen-owned and reproduce it exactly across JavaScript and Python packages.
|
|
@@ -586,7 +640,7 @@ workflow order without introducing another version owner.
|
|
|
586
640
|
|
|
587
641
|
<!-- cli-reference:start -->
|
|
588
642
|
|
|
589
|
-
## Command
|
|
643
|
+
## Command reference
|
|
590
644
|
|
|
591
645
|
### `release`
|
|
592
646
|
|
package/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/projen";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.136";
|
|
7
7
|
export * as barrels from "./src/barrels.ts";
|
|
8
8
|
export * as bunApp from "./src/bun-app.ts";
|
|
9
9
|
export * as bunWorkflow from "./src/bun-workflow.ts";
|
package/package.json
CHANGED
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@clack/prompts": "^1.7.0",
|
|
33
|
-
"@dbx-tools/cli-args": "^0.9.
|
|
34
|
-
"@dbx-tools/core": "^0.9.
|
|
35
|
-
"@dbx-tools/path": "^0.9.
|
|
36
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
33
|
+
"@dbx-tools/cli-args": "^0.9.136",
|
|
34
|
+
"@dbx-tools/core": "^0.9.136",
|
|
35
|
+
"@dbx-tools/path": "^0.9.136",
|
|
36
|
+
"@dbx-tools/shared-core": "^0.9.136",
|
|
37
37
|
"commander": "^15.0.0",
|
|
38
38
|
"concurrently": "^10.0.3",
|
|
39
39
|
"constructs": "^10.6.0",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"main": "index.ts",
|
|
57
57
|
"license": "Apache-2.0",
|
|
58
|
-
"version": "0.9.
|
|
58
|
+
"version": "0.9.136",
|
|
59
59
|
"types": "index.ts",
|
|
60
60
|
"type": "module",
|
|
61
61
|
"exports": {
|