Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

배워보자~

[Node.js] Express 프로젝트 기본 구조 분석 - package.json 본문

Node.js

[Node.js] Express 프로젝트 기본 구조 분석 - package.json

벽면 수도 2019. 6. 17. 23:11
package.json 이란? npm 패키지(프로젝트) 설정 파일(?), json 구조임. 
https://docs.npmjs.com/files/package.json 공식문서 확인한 번 해보시고요.
참고로 이 글을 잘 번역하신 분도 계시네요. 여기 링크확인.
{
    "name": "myapp",
    "version": "0.0.0",
    "private": true,
    "scripts": {
        "start": "node ./bin/www"
    },
    "dependencies": {
        "cookie-parser": "~1.4.4",
        "debug": "~2.6.9",
        "express": "~4.16.1",
        "http-errors": "~1.6.3",
        "morgan": "~1.9.1",
        "pug": "2.0.0-beta11"
    }
}

한줄 한줄 분석

  • "name" : "myapp"
    패키지의 이름. 공식적 패키지를 배포한다면 매우 중요한 요서가 된다. (이름이니 필수값이겠죠.)
    이름 명명 규칙도 공식 문서 몇가지가 있다. 참고 하길~
  • "version" : "0.0.0"
    버전정보, 버전명명 규칙은 node-semver로 파싱이 가능해야 한다. node-semver 설치 후 실해해볼 수 있다.
    ** name + version 은 유일한 값으로 처리된다. 향후 공식 배포시 중요한 역활.
    (dependencies 의 값을 보면 알 것이다.)
  • "private" : true
    공식적인 배포용이 아니라는 것(비공개용)을 정의 함. 공식 배포을 막는 효과 
    (공식적인 배포라는 의미는 npm 레파지토리에 배포하냐 안하냐 임)
  • "scripts" : { "start" : "node ./bin/www" }
    패키지 라이프 사이클 중에 다양한 타임에 실행되어지는 명령어(이벤트) 사전
    쉽게 이해하려면 패키지 실행 중 발생하는 이벤트이고, 그 이벤트 발생 시 실행되는 모듈을 정의 한다고 생각하자. 즉, 이벤트 정의하고, 핸들러 정의
    Express 실행 명령어를 기억 하는가? "npm start"   
    패키지를 실행하면 start 이벤트가 발생하고, scripts에 정의 된 "start"에서 처리 "node ./bin/www"가 실행
    다양한 명령어(이벤트) 있다. 반드시 확인해보자. 링크 참조
  • "dependencies" : { ...... }
    참조 모듈 정의 
    버전은 다양한 방법으로 정의 할 수 있다. 반드시 링크 확인하자. (너무 명확(?)해서 설명 skip)

그 외 package.json에는 여러 property가 존재한다. 공식문서 반드시 확인하자.

 

package-lock.json 파일은 npm install 실행 시 의존모듈을 다운 받으면서 실제로 받은 버전의 기록이다. 
왜 필요할까?
공동 작업 시 A모듈을 1.0이고, dependency정의 시 A>=1.0  이렇게 작성했다면 A 모듈이 2.0이 릴리즈 된 시점 이후 부터는 npm install하게되면 2.0으로 다운된다. 그러면 공동작업자들 사이에서 1.0, 2.0 이렇게 상이하게 다운 될 수 있다. 이렇게 되면 오류가 발생할 수 있다. 이런 상황을 방지하기 위해.