package.json

Eugenius1st·2022년 7월 6일
0

개발환경

목록 보기
14/15

node.js 환경에서 외부 라이브러리를 다운로드하기 위해 다양한 방법이 존재하지만, 그중 대표적인 것은 바로 npm입니다. npm은 Node Package Manager로 일종의 앱스토어입니다. 필요한 모듈을 다운로드할 수 있는, 모듈들이 모여있는 모듈 스토어입니다.

이러한 남이 만들어놓은 모듈을 node.js 에서는 npm 모듈이라는 이름으로 부르며, 이에 대한 정보를 담아둔 곳이 바로 package.json입니다.

즉, 이 프로젝트(패키지) 전반에 관한 정보가 들어있다고 볼 수 있습니다. 그렇다면 npm이 뭔가요?
node.js 환경에서 외부 라이브러리를 다운로드하기 위해 다양한 방법이 존재하지만, 그중 대표적인 것은 바로 npm입니다. npm은 Node Package Manager로 일종의 "앱스토어"

필요한 모듈을 다운로드할 수 있는, 모듈들이 모여있는 모듈 스토어입니다.

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


"우리 코드는 여기 있고, 필요한 모듈은 package.json에 적어놨으니 네가 직접 다운받아서 쓰면 돼" 라고 하면 됩니다.

필요한 모듈까지 모두 넘겨주는 것은 전달해야 하는 파일도 너무 많거니와 필요 없는 일입니다. 사용하는 사람이 직접 다운로드하라고 하면 됩니다. 우리는 무엇이 필요한지만 알려주면 됩니다.

package.json 에 적혀있는 내용을 하나하나 살펴봅시다. 먼저는 devDependencies 입니다.

실행에 해당 모듈을 "의존"한다고 해서, "의존성(dependency)"이라고 부릅니다.
JSON 형식에서, 키에 적힌 것은 모듈 이름입니다. 값은 버전입니다.
devDependencies에는 이 프로젝트를 개발하는 환경에서 필요한 모듈들이 무엇인지가 적혀 있습니다.


npm install을 이용하면, npm에 있는 모듈을 설치할 수 있는데, 이때 --save-dev 옵션과 함께 설치하면, 자동으로 devDependencies에 추가됩니다.


dependencies는 devDependencies와는 다르게, 이 프로젝트가 돌아가기 위해 반드시 필요한 모듈들이 무엇인지가 적혀 있습니다.

예를 들어, underscore라든지, 이후 배울 React 같은 것이 좋은 예가 됩니다.


--save 옵션과 함께 설치하면, 자동으로 dependencies에 추가됩니다. --save 옵션은 생략해도 좋습니다


프로그램을 나 혼자만 개발하고 사용한다면 큰 문제가 되지 않을 수 있지만, 우리는 대부분 다른 사람과 함께 개발하고 사용하게 됩니다. 그럼 다른 사람에게 이 프로젝트에 대해 알려주어야 하겠죠?! 그 역할을 하는 것이 바로 package.json 입니다.

dependencies
$ npm install react
$ npm install --save react
또는

--save 옵션과 함께 (생략 가능) install 실행시
자동으로 dependencies에 추가됨

why save?
우리가 흔히 하는 npm install은 package.json에 있는 dependency (의존성 모듈)를 바탕으로 설치

why save?
코드에서는 해당 모듈을 쓰고 있지만 npm install로는 설치되지 않는다!

만일 dependency 정보를 적지 않았다고 가정해 봅시다.

코드에서는 해당 모듈을 쓰고 있지만, 무엇을 설치해야 이 프로그램이 작동되는지, 무엇을 설치해야 이 프로그램을 개발할 수 있을지 도통 알 수가 없을 것입니다


자 이제, scripts 항목을 안내합니다. scripts 항목은 CLI에서 사용 가능한 명령을 기술합니다. 우리는 이를 npm script라고 부릅니다.

CLI에서 실행할 때에는 "npm run <스크립트 이름>" 으로 실행합니다.

곧이어 나오는 화면에, 해당 npm script가 어떤 내용을 실행하는지 확인할 수 있습니다.

유용한 scripts 예제를 소개합니다. 주로 실행, 테스트, 코드 검사(lint) 등을 기술합니다.

이러한 작업이 항상 모든 프로젝트에 있는 것은 아니며, 테스트 케이스 통과만이 목적인 경우에는, start 스크립트조차 없을 수 있습니다.

코드스테이츠에서는 특별하게 과제 제출 역시 npm script로 제공됩니다. 대부분의 스프린트에서 npm run submit을 통해 과제 제출이 가능합니다.


profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글