[개발] 초보자를 위한 nodejs 패키지 관리자 npm 소개

in mini.topia4 years ago

출처 : https://www.freecodecamp.org/news/what-is-npm-a-node-package-manager-tutorial-for-beginners/

NPM 이란 ?

NPM ( Nodejs Package Management )NPM (또는 "노드 패키지 관리자")은 JavaScript 런타임 Node.js의 기본 패키지 관리자입니다.

NPM 은 크게 2가지로 구성 됩니다.

  • 패키지 게시 및 다운로드를위한 CLI (명령 줄 인터페이스) 도구
  • JavaScript 패키지를 호스팅 하는 온라인 저장소

패키지 다운로드 : npm install

웹에 배포된(npmjs.com) 패키지를 로컬 머신에 다운로드 받는 엑션

패키지 배포 : npm publish

내가 만든 패키지를 온라인저장소(npmjs.com) 에 배포하는 행위

package.json

프로젝트를 설명하는 다양한 정보를 포함

  • name: JavaScript 라이브러리 / 프로젝트의 이름
  • version: 프로젝트 버전
  • description: 프로젝트 설명
  • license: 프로젝트 라이센스

위 설명한 것 이외에도 실행 스크립트 및 의존성 정보 등을 포함합니다.

npm 스크립트

package.json 또한 scripts프로젝트의 로컬 컨텍스트에 설치된 명령 줄 도구를 실행하도록 정의 할 수 있는 속성을 지원합니다 .

{
  "scripts": {
    "build": "tsc",
    "format": "prettier --write **/*.ts",
    "format-check": "prettier --check **/*.ts",
    "lint": "eslint src/**/*.ts",
    "pack": "ncc build",
    "test": "jest",
    "all": "npm run build && npm run format && npm run lint && npm run pack && npm test"
  }
}

위 스크립트를 통해 tsc 타입스크립트 트랜스 코딩, prettier 를 사용한 ts 파일 포맷팅, eslint 를 통한 문법검사 등등 많은 작업을 커맨드를 통해 손쉽게 수행할 수 있습니다.

dependencies ( 의존성 ) vs devDependencies ( 개발 의존성 )

{
  "dependencies": {
    "@actions/core": "^1.2.3",
    "@actions/github": "^2.1.1"
  },
  "devDependencies": {
    "@types/jest": "^25.1.4",
    "@types/node": "^13.9.0",
    "@typescript-eslint/parser": "^2.22.0",
    "@zeit/ncc": "^0.21.1",
    "eslint": "^6.8.0",
    "eslint-plugin-github": "^3.4.1",
    "eslint-plugin-jest": "^23.8.2",
    "jest": "^25.1.0",
    "jest-circus": "^25.1.0",
    "js-yaml": "^3.13.1",
    "prettier": "^1.19.1",
    "ts-jest": "^25.2.1",
    "typescript": "^3.8.3"
  }
}
  • dependencies : 패키지 설치 시 필수 의존성 명시
  • devDependencies : 개발 및 디버깅 등에 필요한 의존성을 명시함

그래서 사실 패키지를 활용만 하는 입장에서는 전체가 아닌 의존성 부분만 설치 하면 되고, 패키지를 다운 받아 커스터마이징을 하는 경우에는 개발 의존성까지 다운 받아서 디버깅을 손쉽게 진행 할 수 있다.

package-lock.json

이 파일은 npm JavaScript 프로젝트에 사용 된 종속성의 정확한 버전을 설명합니다. ( 메인 의존성 뿐만 아니라 하위 의존성 정보까지 모두 포함한 내용 )

package-lock.json 은 일반적으로 npm install 명령에 의해 생성 되며 NPM CLI 도구 에서도 읽어서 프로젝트의 빌드 환경을 재생성 합니다.

npm install

오늘날 JavaScript / Node.js 애플리케이션을 개발할 때 가장 일반적으로 사용되는 명령입니다.

  • npm install <package-name> 수행 시 최신 버전의 패키지가 설치됩니다
  • ^ 마크 하위는 대상 패키지의 버전 정보 입니다.
  • ~ 마크는 대상 범위에 매칭되는 버전을 의미합니다.
  • -g 옵션을 주면 전역설치를 수행합니다.
  • npm install --production 운영 환경 모드로 설치 합니다. (개발의존성은 설치하지 않음 )

npm audit

개발자가 npm audit 명령을 사용하여 종속성을 감사 할 수있는 보안 허점 목록을 유지 관리합니다. npm 감사는 개발자에게 취약성 및 업그레이드 할 수정 버전이 있는지 여부에 대한 정보를 제공합니다.

npm publish

배포 시 버전 명시 룰

  • MAJOR(중요) - 양립할 수 없는(중대한) API의 변화가 있는 경우
  • MINOR(사소한) - 하위 호환되는 기능적 추가
  • PATCH(패치) - 하위 호환되는 버그 수정

맺음말

개발 기록용 입니다. 누군가에게 도움이 되길 바라면서 ...