npm 스크립트는 package.json의 scripts 필드에 정의되어 npm run <name>으로 실행하는 명령입니다. 프로젝트 작업(start, build, test, lint)을 표준화하여 팀 전체와 CI가 동일한 명령을 사용하게 합니다. 생명주기 훅은 특정 시점에 npm이 자동으로 실행하는 특수 스크립트입니다.
{
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js",
"build": "tsc && vite build",
"test": "vitest",
"lint": "eslint src",
"format": "prettier --write ."
}
}
npm run dev # any script
npm start # `start` and `test` have shortcuts (no "run" needed)
npm test
스크립트는 &&로 명령을 연결할 수 있고(순차 실행, 실패 시 중단), 경로 없이 로컬 설치된 바이너리(node_modules/.bin)에 접근할 수 있습니다. 그래서 vitest가 전역이 아니어도 "test": "vitest"가 동작합니다.
{
"scripts": {
"prebuild": "rimraf dist", // runs AUTOMATICALLY before "build"
"build": "tsc",
"postbuild": "echo done" // runs AUTOMATICALLY after "build"
}
}
npm은 어떤 스크립트 <name>이든 그 전에 pre<name>을, 후에 post<name>을 자동으로 실행합니다. 따라서 npm run build는 prebuild → build → postbuild를 순서대로 실행합니다. 설정/정리 단계에 편리합니다.
{
"scripts": {
"postinstall": "node setup.js", // runs after `npm install` completes
"prepare": "husky install" // runs after install (commonly sets up git hooks)
}
}
postinstall과 prepare 같은 훅은 설치 생명주기의 정해진 시점에 실행됩니다. 흔히 git 훅 설정(husky)이나 네이티브 의존성 컴파일에 사용됩니다. (주의: 의존성의 postinstall 스크립트는 공급망 보안 고려사항이기도 합니다.)
npm run test -- --watch # pass args to the script after --
NODE_ENV=production npm start # set an env var for the run
✓ Self-documenting — `package.json` shows all available tasks
✓ Cross-platform-ish, no global installs needed (uses local node_modules/.bin)
✓ Standard across the JS ecosystem — every dev knows `npm run`
npm 스크립트는 Node/JS 프로젝트의 표준 작업 실행기입니다. 앱을 시작, 빌드, 테스트, 린트하는 방법을 중앙화하고 문서화하여 모든 사람(과 CI)이 동일한 명령을 실행하게 합니다.
스크립트 조합, 자동 pre/post 훅(설정/정리용), postinstall/prepare 같은 생명주기 훅을 이해하면 프로젝트 워크플로를 깔끔하게 자동화할 수 있습니다.
이들은 프로젝트 도구의 접착제이며 사실상 모든 Node 저장소에 등장합니다.