Bun monorepo
参考
Directory Structure
./
|-- bun.lockb
|-- package.json
`-- packages
|-- pkg
| |-- index.ts
| `-- package.json
|-- pkg-a
| |-- index.ts
| `-- package.json
|-- pkg-b
| |-- index.ts
| `-- package.json
`-- pkg-c
|-- index.ts
`-- package.json
実行前
実行前には、以下のコマンドを実行。
sh
rm -rf node_modules
rm -rf bun.lockb
sh
bun install
"workspaces": ["packages/*"],
指定する。
json
{
"name": "monorepo-app",
"type": "module",
"private": true,
"workspaces": ["packages/*"],
}
packages/pkg-a
json
{
"name": "@packages/pkg-a"
}
ts
export const pkg_a = (): string => {
return 'pkg-a'
}
package/pkg-b
json
{
"name": "@packages/pkg-b"
}
ts
export const pkg_b = (): string => {
return 'pkg-b'
}
package/pkg-c
json
{
"name": "@packages/pkg-c"
}
ts
export const pkg_c = (): string => {
return 'pkg-c'
}
各パッケージをimport
して、実行
ts
import { pkg_a } from '@packages/pkg-a'
import { pkg_b } from '@packages/pkg-b'
import { pkg_c } from '@packages/pkg-c'
const res_a = pkg_a()
const res_b = pkg_b()
const res_c = pkg_c()
const pkg = (): string => {
return `pkg: ${res_a} ${res_b} ${res_c}`
}
console.log(pkg())
Execution
pkg: pkg-a pkg-b pkg-c
package.json
json
{
"name": "@packages/pkg",
"dependencies": {
"@packages/pkg-a": "workspace:*",
"@packages/pkg-b": "workspace:*",
"@packages/pkg-c": "workspace:*"
}
}
version
を指定して、import
json
{
"name": "@packages/pkg-a",
"version": "1.0.0"
}
json
{
"name": "@packages/pkg-b",
"version": "1.0.0"
}
json
{
"name": "@packages/pkg-a",
"version": "1.0.0"
}
package.json
json
{
"name": "@packages/pkg",
"dependencies": {
"@packages/pkg-a": "1.0.0",
"@packages/pkg-b": "1.0.0",
"@packages/pkg-c": "1.0.0"
}
}
apps
とpackages
に分割
Directory Structure
./
|-- Makefile
|-- README.md
|-- apps
| `-- monorepo
| |-- package.json
| `-- src
| `-- index.ts
|-- biome.json
|-- bun.lockb
|-- package.json
`-- packages
|-- pkg
| |-- index.ts
| `-- package.json
|-- pkg-a
| |-- index.ts
| `-- package.json
|-- pkg-b
| |-- index.ts
| `-- package.json
`-- pkg-c
|-- index.ts
`-- package.json
ts
import { pkg_a } from '@packages/pkg-a'
import { pkg_b } from '@packages/pkg-b'
import { pkg_c } from '@packages/pkg-c'
const res_a = pkg_a()
const res_b = pkg_b()
const res_c = pkg_c()
export const pkg = (): string => {
return `pkg: ${res_a} ${res_b} ${res_c}`
}
apps/monorepo
json
{
"name": "monorepo",
"dependencies": {
"@packages/pkg": "workspace:*"
}
}
ts
import { pkg } from "@packages/pkg";
const res = pkg()
console.log(res)
Execution
pkg: pkg-a pkg-b pkg-c
version
を指定して、import
json
{
"name": "@packages/pkg",
"version": "1.1.1",
"dependencies": {
"@packages/pkg-a": "workspace:*",
"@packages/pkg-b": "workspace:*",
"@packages/pkg-c": "workspace:*"
}
}
package.json
json
{
"name": "monorepo",
"dependencies": {
"@packages/pkg": "1.1.1"
}
}