하나의 프로그램은 다양한 모듈이 합쳐져서 만들어진다.
하지만 프로그램을 만드는 과정 중에서 이미 개발이 완료된 부분을 다시 개발하여 구현할 필요는 없다. 이미 완성된 것을 가져다 쓸 수 있기 때문.
이미 개발을 완료해서 오픈소스나 다른 방법으로 배포되고 있는 모듈을 node.js에서는 npm 모듈이라고 부르며, 이 모듈들의 정보를 담아놓은 것이 바로 package.json
이다.
node.js 환경에서 외부 라이브러리를 다운로드 받기 위한 방법 중 가장 대표적인 방법이 NPM
이다.
npm
은 Node Package Manager
의 줄임말로, 일종의 앱스토어 개념으로 생각하면 된다.
리눅스의 패키지 매니저가 apt
이고, macOS의 패키지 매니저가 homebrew
이듯, node.js의 패키지 매니저가 npm
인 것이다.
package.json에는 해당 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어 있다.
주의
프로그램을 실행시키기 위해 필요한 실제 모듈은 별도로node_modules
라는 폴더에 저장되며,
package.json
에는 어떤 모듈인지만 적혀있기만 하다.
왜 작성해야 하는가
내가 만든 프로젝트라면 어떤 모듈이 필요하고 어떻게 실행시키는지를 잘 알고 있지만,
아무것도 모르는 사람이 접근했을 때에는 어떤 모듈이 필요한지, 어떻게 실행시키는지 전혀 모른다.
결론적으로 협업에 심각한 문제가 발생하게 된다.
프로젝트 코드를 전달할 때 포함하고 있는 모든 모듈을 전부 전달할 필요가 없이 package.json
을 넘겨주면 넘겨받은사람이 package.json
에서 필요하다고 하는 모듈을 npm
을 이용해 다운받는다.
이 때 npm install
을 이용하면 package.json
에서 필요하다고 하는 모듈을 다운받게 된다. 설치가 완료되면 node_modules
디렉토리가 생긴 것을 확인할 수 있다.
개발 의존성 모듈을 뜻한다.
프로젝트를 개발하는 환경에서 필요한 모듈들을 적어 둔 파트이며, 실제 동작에 직접적으로 영향을 주지 않는 모듈들을 명시한다.
JSON의 Key에는 모듈 이름이, Value에는 버전이 적혀 있다.
npm install [name of module]
을 입력하면 되는데,
이 때 --save-dev
옵션을 추가하여 함께 설치하면 자동으로 devDependencies
에 추가된다.
결과적으로 입력하는 커맨드는 npm install [name of module] --save-dev
가 된다.
의존성 모듈을 뜻한다.
devDependencies
와 다르게, 프로젝트 동작을 위해 반드시 필요한 모듈들이 무엇인지 적혀있다.
(ex : underscore, React 등)
npm install [name of module]
을 입력하면 되는데,
이 때 --save
옵션을 추가하여 함께 설치하면 자동으로 dependencies
에 추가된다. (생략 가능)
결과적으로 입력하는 커맨드는 npm install [name of module]
또는
npm install --save [name of module]
이 된다.
CLI에서 사용 가능한 명령을 기술한다. 이를 npm script
라고 부른다.
CLI에서 실행할 때에는 npm run [name of script]
를 입력하여 실행한다.
그럼 곧이어 나오는 화면에 어떤 내용을 실행하는 지 확인할 수 있다.
example
유용한 script 예제{ "scripts": "node index.js", "test": "mocha test/index.test.js", "lint": "eslint" }
npm run start : node.js 앱 실행 npm run test : 테스트 실행 npm run lint : 코드 검사
주의사항 : 이 작업이 항상 모든 프로젝트에 있는 것은 아니다.