SourceLoom builds LoomPackaging loom-config

Part VIII, Chapter 6

Part VIII, Chapter 6: Packaging loom-config

Package: packages/loom-config/

Language: JSON

Raw source

Packaging loom-config

@athrio/loom-config ships as source — no build of its own.

The manifest

The exports field is the package's surface — one entry, the LoomConfig module. The CLI and the language server inline this source when they bundle; effect is a peer, supplied by the host bundle. The yaml parser, which reads the compiled configuration, is a real dependency, bundled along with the source.

{{ version = ${version} }} {{ effect = ${effect} }}

JSON
{
  "name": "@athrio/loom-config",
  "version": "::[version]",
  "description": "The loom.config.json model and reader for Loom projects.",
  "license": "MIT",
  "type": "module",
  "exports": {
    "./LoomConfig": "./src/LoomConfig.ts"
  },
  "peerDependencies": {
    "effect": "::[effect]"
  },
  "devDependencies": {
    "effect": "::[effect]"
  },
  "dependencies": {
    "yaml": "^2.9.0"
  }
}

The TypeScript config

The config extends the workspace base and typechecks src. The Node and Bun types come from the base, which declares types: ['node', 'bun'] once for every package — Bun's isolated layout does not reliably resolve @types/node. The config never ships.

JSON
{
  "extends": "../../tsconfig.base.json",
  "compilerOptions": {
    "outDir": "out",
    "rootDir": "src"
  },
  "include": ["src"]
}
Loom