Skip to content

Bun Workspaces

 Bunのworkspacesを試す。

Directory Structure

.
├── package.json
├── packages
│   ├── a
│   │   ├── index.ts
│   │   └── package.json
│   └── b
│       ├── index.ts
│       └── package.json
└── src
    └── index.ts

packages/a/

json
{
  "name": "@pkg/a"
}
ts
export const pkga = (): string => {
  return 'パッケージAです'
}

packages/b/

json
{
  "name": "@pkg/b"
}
ts
export const pkgb = (): string => {
  return 'パッケージBです'
}

src/index.tsから利用

 ルートパッケージを誤って後悔しないように、"private": trueをつけるのが慣例。

json
{
  "private": true,
  "workspaces": [
    "packages/*"
  ]
}
ts
import { pkga } from '@pkg/a'
import { pkgb } from '@pkg/b'

const resa: string = pkga()
const resb: string = pkgb()

console.log(resa)
console.log(resb)

Execution

パッケージAです
パッケージBです

WARNING

もし、ディレクトリ変更した場合

├── package.json
├── packages
│   ├── a
│   │   ├── package.json
│   │   └── src
│   │       └── index.ts
│   └── b
│       ├── package.json
│       └── src
│           └── index.ts
├── README.md
└── src
    └── index.ts

"main"のパスを合わせる。

json
{
  "name": "@pkg/a",
  "main": "src/index.ts"
}
json
{
  "name": "@pkg/b",
  "main": "src/index.ts"
}