1. 의문
Node.js 프로젝트 만들고 실행할 때 터미널에 이걸 입력한다. 그럼 실행되는데 뭐가 어떻게 되는지 모르겠다.
2. npm - scripts
package.json
파일의 scripts
부분에 명령어를 정의할 수 있다.
미리 정해진 스크립트(수명주기이벤트)들이 있다. 예를 들어 install
이 있다. package.json
에서 install
스크립트를 정의하면 npm install
실행시 그 명령어가 실행된다.
정해진 스크립트들 외에 원하는 이름으로 사용자 스크립트를 정의할 수 있는데; dev
라는 스크립트도 그런 거다. 사용자 스크립트인 경우에는 npm run <스크립트이름>
이렇게 실행시킨다.
예
// package.json
{
"name": "myfrontend",
...
"scripts": {
"dev": "vite",
...
},
...
}
위의 예에서 scripts
하위에 "dev": "vite"
가 있다. 그래서 npm run dev
를 실행할 수 있으며; 결과로 vite
가 실행된다.
다만 그렇다고 터미널에 직접 vite를 치면 실행이 안 되는데 이유가 있다. vite
가 실행되는 환경은 npm run dev
을 실행한 터미널과 같은 실행 환경이 아니다.
- npm을 호출한 터미널의 현재 작업 디렉토리와 무관; 프로젝트의 루트 폴더에서 실행된다.
npm install
을 통해 설치한 의존성 모듈은node_modules/.bin/
에 실행파일을 가지기도 하는데;npm run
명령으로 그 파일을 실행할 수 있다.
내 프로젝트에서는 node_modules/.bin/vite
파일의 존재가 확인된다. 그래서 이 파일이 실행되는 거다. 그러니까 프로젝트 루트 폴더에서 ./node_modules/.bin/vite
라고 입력해서 그 파일을 실행하면 npm run dev
를 실행했을 때와 똑같이 실행된다.
3. 참고
728x90