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} }}
{
"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.
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "out",
"rootDir": "src"
},
"include": ["src"]
}