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