package.json

package.json?

  • npm 모듈을 활용하기 위해 해당 모듈에 대한 정보를 담은 파일
  • 즉, 프로젝트 전반에 관한 정보가 들어있다 

npm

node.js 생태계의 패키지 매니저

package.json?

{
  "name": "modern-javascript-koans",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "mocha modern-js-koans/*.js --sort",
    "report": "mocha modern-js-koans/*.js --sort --reporter @mochajs/json-file-reporter",
    "submit": "codestates-submission"
  },
  "keywords": [],
  "author": "codesatates",
  "dependencies": {
    "@codestates-cc/submission-npm": "^1.1.1"
  },
  "devDependencies": {
    "@mochajs/json-file-reporter": "^1.2.1",
    "chai": "^4.2.0",
    "mocha": "^8.2.0",
    "sinon": "^9.0.3"
  }
}

프로젝트에 관한 정보

CLI에서 사용가능한 명령

개발과 관련된 dependency들

천리길도 npm install 부터

$ npm install

package.json에 적힌 모듈을 다운로드 받습니다

node_modules에
저장됩니다

devDependencies

{
  "devDependencies": {
    "@mochajs/json-file-reporter": "^1.2.1",
    "chai": "^4.2.0",
    "mocha": "^8.2.0",
    "sinon": "^9.0.3"
  }
}

프로그램 실행과 관계없는 오로지 개발을 위해 필요한
 dependency (의존성 모듈)

--save-dev 옵션과 함께 install 실행시 자동으로 devDependencies에 추가됨

$ npm install mocha --save-dev

devDependencies

* 참고로 mocha라는 모듈은 테스트를 위해 필요합니다

dependencies

{
  "dependencies": {
    "react": "^16.7.0",
    "react-dom": "^16.7.0"
  }
}

직접 실행과 관련 있는 dependency

이 프로젝트에서는 React라는 라이브러리를 사용하고 있네요!

dependencies

$ npm install react
$ npm install --save react

또는

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

why save?

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

why save?

dependency에 등록되어 있지않다면?

why save?

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

why save?

팀 갈등의 주요 원인이 된다

scripts 항목

{
  "scripts": {
    "test": "mocha modern-js-koans/*.js --sort",
    "report": "mocha modern-js-koans/*.js --sort --reporter @mochajs/json-file-reporter",
    "submit": "codestates-submission"
  }
}

CLI에서 사용가능한 명령 (npm script라고 부릅니다)

npm run <스크립트이름> 으로 실행 가능
{
  "scripts": {
    "start": "node index.js",
    "test": "mocha test/index.test.js",
    "lint": "eslint",
    "submit": "codestates-submission"
  },
}

주로 다음과 같은 작업들을 scripts 항목에 기술한다

scripts 항목

*참고: 위에서 언급된 작업들이 항상 모든 프로젝트에 있는 것은 아닙니다

작업 내용 실행 스크립트
node.js 앱 실행 npm run start
테스트 실행 npm run test
코드 검사 npm run lint
과제 제출 (코드스테이츠 only) npm run submit

마지막 슬라이드입니다

[DOB] Node.js - npm & package.json

By Codestates

[DOB] Node.js - npm & package.json

  • 129