Npm Monerepo
Directory Structure
.
├── apps
│ ├── package.json
│ ├── src
│ │ └── index.ts
│ └── tsconfig.json
├── biome.json
├── package.json
├── package-lock.json
├── packages
│ └── fizzbuzz
│ ├── package.json
│ ├── src
│ │ └── index.ts
│ └── tsconfig.json
└── tsconfig.base.json
json
{
"name": "npm-monorepo-test",
"private": true,
"workspaces": ["apps", "packages/*"],
"devDependencies": {
"@biomejs/biome": "^1.8.3"
}
}
json
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"declaration": true
}
}
apps
tsconfig.base.json
をextends
するが、outdir
はこちらで指定しないと、ビルド先のパスがおかしくなる。
json
{
"name": "apps",
"devDependencies": {
"@types/node": "^22.5.1",
"typescript": "^5.5.4"
}
}
ts
import { fizzBuzz } from 'fizzbuzz'
console.log('fizz Buzz Start')
fizzBuzz(100)
console.log('fizz Buzz End')
json
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["src/**/*.ts"]
}
packages/fizzbuzz
tsconfig.base.json
をextends
するが、outdir
はこちらで指定しないと、ビルド先のパスがおかしくなる。
json
{
"name": "fizzbuzz",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"devDependencies": {
"@types/node": "^22.5.1",
"typescript": "^5.5.4"
}
}
ts
export function fizzBuzz(n: number): void {
for (let i = 1; i <= n; i++) {
console.log(i % 15 === 0 ? 'FizzBuzz' : i % 3 === 0 ? 'Fizz' : i % 5 === 0 ? 'Buzz' : i)
}
}
json
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "./dist"
},
"include": ["src/**/*.ts"]
}
Execution
fizz Buzz Start
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
...
fizz Buzz End