Make scripts/ a pnpm workspace + add README
render-legal.ts needs @types/node available to the TS language server so editors (VS Code, cursor, etc.) don't complain about missing Node globals. Without a tsconfig in this folder VS Code falls back to a default config with no types and shows red squiggles on every process/fs/path reference. Solution: scripts/ becomes its own pnpm workspace (@trails-cool/scripts), carrying @types/node as a devDep from the catalog, and a tiny tsconfig.json with types: [node] and include *.ts. This also wires the folder into `pnpm typecheck` as task #14, so CI type-checks scripts alongside every other package. No runtime impact — the workspace is never bundled or deployed. README documents the layout, current contents (render-legal.ts + check-dockerfiles.sh), and how to add new scripts. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
2abc207c2f
commit
374102e633
5 changed files with 59 additions and 0 deletions
6
pnpm-lock.yaml
generated
6
pnpm-lock.yaml
generated
|
|
@ -654,6 +654,12 @@ importers:
|
|||
|
||||
packages/ui: {}
|
||||
|
||||
scripts:
|
||||
devDependencies:
|
||||
'@types/node':
|
||||
specifier: 'catalog:'
|
||||
version: 22.19.17
|
||||
|
||||
packages:
|
||||
|
||||
'@adobe/css-tools@4.4.4':
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
packages:
|
||||
- "apps/*"
|
||||
- "packages/*"
|
||||
- "scripts"
|
||||
|
||||
catalog:
|
||||
react: ^19.2.5
|
||||
|
|
|
|||
31
scripts/README.md
Normal file
31
scripts/README.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# scripts
|
||||
|
||||
One-off CLIs for maintenance tasks that don't belong inside any of the
|
||||
apps or packages. Small enough to live in a single file each.
|
||||
|
||||
This folder is a pnpm workspace (`@trails-cool/scripts`) purely so TypeScript
|
||||
has a home to resolve `@types/node` from — it isn't published, bundled, or
|
||||
deployed. Each script is a self-contained `.ts` file run with
|
||||
`node --experimental-strip-types`.
|
||||
|
||||
## Contents
|
||||
|
||||
| Script | Purpose |
|
||||
|---|---|
|
||||
| `render-legal.ts` | Render a legal page (Terms / Privacy / Imprint) from its TSX source to plain markdown for `docs/legal-archive/`. See [`docs/legal-archive/README.md`](../docs/legal-archive/README.md). |
|
||||
| `check-dockerfiles.sh` | Bash script run in CI to verify every workspace package is COPY'd into each app's Dockerfile. |
|
||||
|
||||
## Adding a script
|
||||
|
||||
1. Drop the file in this folder (`.ts` preferred; shell is fine for
|
||||
filesystem/docker glue).
|
||||
2. For TypeScript, `tsconfig.json` already picks up every `*.ts` in this
|
||||
directory.
|
||||
3. Run it with `node --experimental-strip-types scripts/<name>.ts <args>`.
|
||||
4. Document purpose + invocation in the table above.
|
||||
|
||||
## Why not per-package scripts?
|
||||
|
||||
Some things (Dockerfile audits, legal-archive rendering, DB one-offs) don't
|
||||
belong inside any single workspace. Keeping them here avoids cross-package
|
||||
dependencies and keeps the app/package roots focused on product code.
|
||||
13
scripts/package.json
Normal file
13
scripts/package.json
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "@trails-cool/scripts",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"typecheck": "tsc --noEmit",
|
||||
"lint": "eslint ."
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "catalog:"
|
||||
}
|
||||
}
|
||||
8
scripts/tsconfig.json
Normal file
8
scripts/tsconfig.json
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"extends": "../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"types": ["node"],
|
||||
"noEmit": true
|
||||
},
|
||||
"include": ["*.ts"]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue