SHIN
Node.js 실전 팁 20선
20편별도 태스크 러너 없이도 package.json scripts만으로 대부분의 빌드 파이프라인을 구성할 수 있습니다.
{
"scripts": {
"start": "node dist/server.js",
"dev": "tsx watch src/server.ts",
"build": "tsc -p tsconfig.json",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"lint": "eslint src --ext .ts,.tsx",
"format": "prettier --write src",
"typecheck": "tsc --noEmit"
}
}{
"scripts": {
"prebuild": "npm run clean",
"build": "tsc",
"postbuild": "npm run copy-assets",
"clean": "rm -rf dist",
"copy-assets": "cp -r src/assets dist/",
"ci": "npm run lint && npm run typecheck && npm run test && npm run build"
}
}
pre<name>,post<name>훅은 자동으로 실행됩니다.
npm install -D npm-run-all{
"scripts": {
"check": "run-p lint typecheck test",
"dev": "run-p dev:server dev:worker dev:tunnel",
"dev:server": "tsx watch src/server.ts",
"dev:worker": "tsx watch src/worker.ts",
"dev:tunnel": "ngrok http 3000"
}
}npm install -D cross-env # Windows/Mac/Linux 호환{
"scripts": {
"test": "cross-env NODE_ENV=test vitest run",
"build:prod": "cross-env NODE_ENV=production tsc",
"db:seed": "cross-env DATABASE_URL=file:./dev.db tsx prisma/seed.ts"
}
}npm run test -- --reporter=verbose
npm run build -- --watch{
"scripts": {
"db:migrate": "prisma migrate dev --name",
"generate": "tsx scripts/generate.ts"
}
}npm run db:migrate -- add-user-table{
"scripts": {
"prepare": "husky install",
"prepublishOnly": "npm run build && npm test",
"preinstall": "node check-node-version.js"
}
}{
"scripts": {
"release": "standard-version",
"deploy": "npm run build && rsync -av dist/ user@server:/app/",
"docker:build": "docker build -t myapp .",
"docker:run": "docker run -p 3000:3000 myapp",
"db:reset": "prisma migrate reset --force && prisma db seed"
}
}