Node.js

npm

babydeve 2023. 8. 13. 23:24

1. npm(node package manage)

  • 자바스크립트용 패키지 매니저
  • 유저가 만든 패키지를 등록하는 저장소
  • CLI(Command Line Interface)
  • Node.js를 설치할 때 함께 설치된다.
  • 패키지 매니저 : 프로젝트에 필요한 의존성 패키지를 관리하는 프로그램
  • 의존성 패키지 : 해당 프로젝트를 실행하는 데 꼭 필요한 라이브러리와 모듈들(npm은 이런 의존성 패키지를 잘 관리할 목적으로 만들어졌다.)

2. 패키지와 모듈

2-1)패키지와 모듈

  • Node.js에서 패키지는 package.json으로 정의한 파일 또는 데릭터리를 의미한다.
  • 패키지에는 package.json이 꼭 포함된다.
  • Node.js에서 모듈은 [node_modules]디렉터리 아래에 있는 파일 또는 디렉터리를 의미한다.
  • [node_modules]에 있는 파일이나 디렉터리는 require()함수로 읽을 수 있다.
  • [node_modules]에는 npm install 명령으로 설치한 패키지들이 저장된다.(즉 모든 패키지는 모듈이다.)
  • npm에 등록하지 않아도 패키지 포맷만 맞다면 npm install로 설치할 수 있다.
  • 패키지로 만들면 npm 레지스트리에 등록할 수 있다.
  • 패키지로 만든 코드들은 간단하게 다른 곳에서 설치해 사용이 가능하므로 사설 npm레지스트리에 공통으로 사용하는 패키지를 배포해서 사용하기도 한다.

2-2)패키지 임포트 하는 방법

  • CommonJS(CJS) : require()함수
  • ES module(ESM) : import
  • CommonJS : 브라우저뿐만 아니라 서버 애플리케이션에서도 모듈기능을 제공하기 위해 나온 모듈 규약이다. ES^가 나오기 전에 많이 사용되었고, Node.js의 기본값으로 사용되고 있다. ES6 자바스크립트 모듈의 표준이다.
  • Node.js는 기본적으로 CommomJS문법을 사용한다. package.json 에 type속성을 module로 설정하면 ESM을 사용할 수 있다. Node.js에서 ESM을 사용하면 프론트엔드의 코드를 백엔드에서도 쉽게 가져가 사용할 수 있다.

3. package.json 파일 만들기

  • 패키지를 만들려면 package.json이 필요하다.
  • package.json 파일은 수작업으로 만들 수도 있고 npm init 명령을 사용해 만들 수도 있다.

1) package.json 생성하기

  • 디렉터리 만들기
  • npm 설치하기
cd sample-package
npm init -y
  • 나오는 질문들에 모두 enter 키를 누르면 기본으로 설정된다.

2) index.js 파일 만들기(사칙연산 함수 추가하기) 

//require()함수로 모듈을 읽을 때 파일을 위에서부터 읽는다.
console.log("require로 부르면 실행됩니다.")
//사칙연산을 하는 각 함수를 객체 타입으로 저장한다.
module.exports = {
    add: (a, b) => a + b,
    sub: (a, b) => a - b,
    multi: (a, b) => a * b,
    div: (a, b) => a / b
}
  • require()함수로 모듈을 읽을 때는 파일을 위에서부터 읽는다.
  • module.exports : require를 사용해 불러왔을 때 반환하는 객체를 저장하는 변수
  • module : 현재 모듈
  • exports : 외부에 노출할 객체를 저장하는 변수(기본값은 비어있다.)
  • sample-package를 설치한 프로젝트에서는 require("sample-package")로 module.exports 안의 값을 가져올 수 있다.

4. 다른 프로젝트에서 설치 후 사용하기

1) 새로운 디렉터리 만들기('sample-test')

2) 터미널에서 sample-package 설치하기

mkdir sample-test
cd sample-test
npm install ../sample-package

3) sample-test 디렉터리에 index.js를 만들고 sample-package 테스트해보기

  • index.js
const calc = require("sample-package");

const a = 17;
const b = 3;

console.log("a + b =", calc.add(a, b));
console.log("a - b =", calc.sub(a, b));
console.log("a * b =", calc.multi(a, b));
console.log("a / b =", calc.div(a, b));
  • node index.js 명령 실행

5. package.json의 구성요소

참조 : https://valuefactory.tistory.com/529

 

package.js의 구성요소 분석하기

원글 : https://programmingsummaries.tistory.com/385 이 글은 npm 의 https://docs.npmjs.com/files/package.json 을 번역한 글이며, 의역이 풍성하게 있습니다. 또 필요한 부분에는 이해를 돕기 위한 설명을 역자주 형태

valuefactory.tistory.com

6. 패키지 설치, 업데이트, 삭제

1) 패키지 설치하기

npm install   옵션
npm i
npm add
*셋 중 아무거나 사용해도 결과는 같다.
  • 예시
npm install : 아무 옵션도 없으면 해당 디렉터리의 package-lock.json에 정의되어 있는 패키지들을 설치한다.
npm install lodash
npm install lodash@latest
npm install lodash@4.17.21
npm install lodash@">=4.17.0 <4.20.0" : 여러 버전이 조건에 만족하면 최신 버전 설치
npm install jest -D : jest를 devDependency에 추가
npm install 깃 저장소 주소 : 깃 저장소 url을 설정해 설치

2) 패키지 업데이트하기

  • -g옵션은 node가 설치되어 있는 디렉터리의 의존성 패키지를 업데이트할 때 사용한다.
  • 패키지명이 없으면 package.json에 정의한 의존성 패키지들 전부를 업데이트한다.
npm update    -g   패키지명1, 패키지명2...
npm up
npm upgrade

3) 설치한 패키지 확인하기

npm ls   @스코프/ 패키지명
npm list
npm la
npm ll
  • 예시
npm ls : 기본적으로 설치한 패키지만 나온다.
npm ls --depth=1 : 패키지의 의존성 확인

4) 패키지 삭제하기

npm uninstall @스코프/ 패키지명 옵션
npm remove
npm rm
npm r
npm un
npm unlink
  • 예시
npm uninstall express --save
npm uninstall @types/react
npm uninstall jest --save-dev
npm uninstall plugin --save-optional
728x90