TIL_210406

멜로디·2021년 4월 6일
0

Today I Learned

목록 보기
16/30
post-thumbnail

오늘 배운 것

  • npm
  • package.json

NPM

개요

하나의 프로그램은 다양한 모듈이 합쳐져서 만들어진다.
하지만 프로그램을 만드는 과정 중에서 이미 개발이 완료된 부분을 다시 개발하여 구현할 필요는 없다. 이미 완성된 것을 가져다 쓸 수 있기 때문.

이미 개발을 완료해서 오픈소스나 다른 방법으로 배포되고 있는 모듈을 node.js에서는 npm 모듈이라고 부르며, 이 모듈들의 정보를 담아놓은 것이 바로 package.json이다.

what is NPM

node.js 환경에서 외부 라이브러리를 다운로드 받기 위한 방법 중 가장 대표적인 방법이 NPM이다.
npmNode Package Manager의 줄임말로, 일종의 앱스토어 개념으로 생각하면 된다.
리눅스의 패키지 매니저가 apt이고, macOS의 패키지 매니저가 homebrew이듯, node.js의 패키지 매니저가 npm인 것이다.

package.json

개요

package.json에는 해당 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어 있다.

주의
프로그램을 실행시키기 위해 필요한 실제 모듈은 별도로 node_modules라는 폴더에 저장되며,
package.json에는 어떤 모듈인지만 적혀있기만 하다.

왜 작성해야 하는가
내가 만든 프로젝트라면 어떤 모듈이 필요하고 어떻게 실행시키는지를 잘 알고 있지만,
아무것도 모르는 사람이 접근했을 때에는 어떤 모듈이 필요한지, 어떻게 실행시키는지 전혀 모른다.
결론적으로 협업에 심각한 문제가 발생하게 된다.

package.json의 장점

프로젝트 코드를 전달할 때 포함하고 있는 모든 모듈을 전부 전달할 필요가 없이 package.json을 넘겨주면 넘겨받은사람이 package.json에서 필요하다고 하는 모듈을 npm을 이용해 다운받는다.

이 때 npm install 을 이용하면 package.json에서 필요하다고 하는 모듈을 다운받게 된다. 설치가 완료되면 node_modules디렉토리가 생긴 것을 확인할 수 있다.

devDependencies

개발 의존성 모듈을 뜻한다.
프로젝트를 개발하는 환경에서 필요한 모듈들을 적어 둔 파트이며, 실제 동작에 직접적으로 영향을 주지 않는 모듈들을 명시한다.
JSON의 Key에는 모듈 이름이, Value에는 버전이 적혀 있다.

설치

npm install [name of module]을 입력하면 되는데,
이 때 --save-dev 옵션을 추가하여 함께 설치하면 자동으로 devDependencies에 추가된다.
결과적으로 입력하는 커맨드는 npm install [name of module] --save-dev 가 된다.

dependencies

의존성 모듈을 뜻한다.
devDependencies와 다르게, 프로젝트 동작을 위해 반드시 필요한 모듈들이 무엇인지 적혀있다.
(ex : underscore, React 등)

설치

npm install [name of module]을 입력하면 되는데,
이 때 --save 옵션을 추가하여 함께 설치하면 자동으로 dependencies에 추가된다. (생략 가능)
결과적으로 입력하는 커맨드는 npm install [name of module] 또는
npm install --save [name of module]이 된다.

scripts

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 : 코드 검사

주의사항 : 이 작업이 항상 모든 프로젝트에 있는 것은 아니다.

profile
하루하루 배울때마다 기록하는 일기장

0개의 댓글