궁금한게 많은 개발자 노트

Node.js npm, yarn, package.json 본문

Language

Node.js npm, yarn, package.json

궁금한게 많은 개발자 2022. 4. 7. 11:30

npm : node package manager, registry, npm CLI

npm install --save-dev : 개발하는 환경에서만 필요한 의존성

package.json에서 dependencies는 실제 실행 환경, devDependencies는 개발 환경에서 필요한 의존성들

 

package.json : 대략적인 package의 버전을 정의 (다른 패키지의 버전이 업데이트 되더라도 따라가기 위해, 추적을 위함)

                         실제 설치되는 버전과 정확히 일치하지는 않을 수 있음을 유의

package-lock.json : package의 실제 설치된 버전을 정의 (협업 시에나 환경이 달라지는 경우 매우 중요)

설치되는 package들은 node_modules 아래에 설치되게 됨

 

node_modules아래의 설치된 package의 index.js에서 export하여 src에서 사용할 수 있도록 해줌

ex) require('decamelize') === require('decamelize/index)와 같은 역할을 함

 

 

Semantic Versioning

MAJOR version : imcompatible API changes

MINOR version : backward compatible 같은 라이브러리를 버전을 올려서 쓰더라도 동작에는 영향X (ex) 새로운 기능 추가

PATCH version : backward compatible 이나 bug fix등

ex) 버전 제한자의 사용 patch를 따라가고 싶은 경우 ~, minor는 ^, major는 *or x사용

      -> npm update package_name : 제한자를 따라가는 가장 최신의 버전으로 패키지를 설치

 

 

yarn : ultra fast -> caching을 사용하여 빠른 속도로 패키지 관리 (npm처럼 패키지 관리)

yarn.lock파일으로 package-lock과 같은 기능을 수행

script를 정의하고 실행시에 run을 사용하지 않더라도 yarn lint등과 같이 사용가능

 

 

package.json의 filed

eslint를 CI에서 사용한다면 가장 최적으로 사용하는 방법 (continuous integration)

여러 사람의 editor설정이 중구난방 및 개발 환경이 다 다를 수 있으므로 통합하기 위해서는,

같은 환경에서 같은 테스트, 배포과정을 돌리도록 하는 것이 CI (개발 자동화의 기초적인 부분)

 

scripts : user정의 script를 넣을 수 있는 필드, 프로젝트 관리용으로 주로 사용

              npm run을 통해서 실행 가능 ex) npm run lint

engines : 동작 가능한 node의 버전을 명시

repositery : 소스 코드가 관리되는 저장소 위치를 지정 ex) github의 경우 npm docs명령어로 찾을 수 있음

main : 프로그램의 시작점이 되는 모듈의 ID, require(패키지이름)을 했을때 패키지 이름에 해당하는 모듈의 exports객체가 반환

files : 프로젝트에 포함도니 파일의 배열, 폴더 이름으로 지정 시 폴더 안의 파일도 포함

          .npmignore에 지정된 파일들은 files에 포함되어 있다고 하더라도 대사에서 제외

author, contributors : author는 한 사람, contributors는 여러사람 -> 필수적으로 name필드, email과 url은 선택적

keywords : 키워드를 문자열 배열로 섦여, npm search로 검색된 리스트에 표시되므로 만든 패키지를 찾고 이 해하는데 도움

name : 패키지 이름, version : 패키지 버전, description : 패키지 설명, license : 패키지에 포함된 라이센스

 

'Language' 카테고리의 다른 글

[python] asyncio (1)  (0) 2022.05.23
Node.js convention  (0) 2022.04.07
Node.js require과 module, resolution  (0) 2022.04.07
자바스크립트 정규표현식  (0) 2022.04.04
자바스크립트 Polyfill / Transpile / optional chaining  (0) 2022.04.04
Comments