제목 : NPM 패키지 매니저에 대한 소개
NPM 에 대한 소개
npm
은 Node.js 의 표준 패키지 매니저입니다.
2022 년 9월, 210만 이 넘는 패키지가 npm 레지스트리에 나열되어 있다는 것이 보고되었습니다.
이는 지구에서 가장 큰 단일 코드 레포지토리로 만들어 주었으며, 모든 것에 대한 패키지가 있다고 확신 할 수 있습니다.
Node.js 패키지의 의존성을 다운로드하고 관리하는 방식처럼 시작했지만,
프론트엔드 자바스크립트에서 또한 사용되는 도구이기도 합니다.
Yarn 과 pnpm 이 npm cli
를 대체하기도 합니다.
이러한 위의 두 도구를 살펴볼 수 있습니다.
패키지
npm
명령어는 당신의 프로젝트에서 의존성 다운로드들을 관리합니다.
모든 의존성 설치하기
만약에 프로젝트가 package.json
파일을 가지고 있다면, 이를 실행하세요 :
터미널 혹은 커스텀 쉘에서 실행 :
$ npm install
이 명령어는 프로젝트에 필요한 모든것을 node_modules
폴더에 설치 할 것이며,
해당 폴더가 존재하지 않는다면 폴더를 생성하여 설치 할 겁니다.
단 하나의 패키지 설치하기
또한 이러한 명령어를 쉘에서 실행하여 지정된 패키지를 설치 할 수도 있습니다.
$ npm install <package-name>
더 나아가 npm 5 때부터,
이 명령어는 설치된 <package-name>
을 package.json
파일에 추가합니다.
version 5 이전에는, 당신이 직접 --save
옵션 플래그를 추가해야 했습니다.
현재는
npm i <package-name>
입력하면 디폴트로--save
옵션이 붙음.
종종 이 명령어에 추가되는 더 많은 플래그들을 볼 겁니다 :
--save-dev
: 설치하고package.json
파일의 devDependencies 의 엔트리로 추가됩니다.--no-save
: 설치하지만,package.json
파일의 의존성 엔트리로 추가되지 않습니다.--save-optional
: 설치하고package.json
의 optionalDependencies 엔트리로 추가됩니다.--no-optional
: 위의 선택적 의존성 이 설치되는 것을 방지합니다.
위 명령어의 단축 버전은 이렇게도 사용될 수 있습니다 :
-S
:--save
-D
:--save-dev
-O
:--save-optional
devDependencies(개발 의존성) 과 dependencies(의존성) 의 차이점은,
전자의 경우 테스트 라이브러리같은 개발 도구들을 포함하며,
후자의 경우 프로덕션 상태에 있는 앱과 함께 번들링됩니다.
optionalDependencies(선택 의존성) 에 대한 차이점은,
일반 의존성에 대한 빌드 실패로 해당 선택 의존성의 설치 실패를 일으키지 않는다는 것입니다.
즉, 일반 의존성은 빌드의 실패 유무에 따라 설치되지 않는데,
선택 의존성(optionalDependencies
) 는 빌드의 실패 유무를 따지지 않는다는 것이다.
그러나, 빌드 실패 유무를 따지지 않는 만큼,
해당 의존성 영역의 부족을 다루는 것은 당신의 프로그램에 책임이 있습니다.
이에 대한 더 많은 사항은 Optional Dependencies 에서 볼 수 있습니다.
패키지들 업데이트하기
업데이트 하는 것 또한 이 명령어를 쉘에서 실행하면 쉽습니다.
$ npm update
npm
은 모든 패키지들에 대한 새로운 버전을 확인 할 것이며,
당신의 버전 관리 제약을 만족 할 겁니다.
또한, 설치할 때 처럼 단 하나의 패키지를 지정하여 업데이트 할 수 있습니다 :
$ npm update <package-name>
버저닝 - 버전 관리
게다가 평범한 다운로드에서,
npm
은 버전 또한 관리하므로,
패키지의 모든 특정 버전을 지정할 수 있거나, 더 낮거나 높은 버전의 패키지를 요구할 수도 있습니다.
당신은 라이브러리가 다른 라이브러리의 메이저 릴리즈에만 호환되는 것을 자주 볼 것입니다.
혹은 아직 수정중인 최신 버전 라이브러리가 여전히 이슈를 발생하고 있습니다.
라이브러리의 버전을 명백하게 지정하는 것은 모두가 패키지에서 동일한 버전을 유지하도록 도와주며,
이는 package.json
파일이 업데이트 될 때 까지,
전체 팀이 동일한 버전을 실행하도록 해 줍니다.
이러한 모든 경우들에서, 버저닝(버전 관리) 는 도움이 많이 되며,
npm
은 시멘틱 버저닝 표준을 따릅니다.
당신은 이러한 템플릿을 실행하여 특정한 버전의 패키지를 설치 할 수 있습니다 :
$ npm install <package-name>@<version>
태스크 실행하기 - 명령어 스크립트 구동
package.json
파일은 명령어 라인 task 에 대한 형식을 지원합니다 :
$ npm run <task-name>
개인적으로 이건
이 가깝지 않나 생각한다.
예를 들어 :
{
"scripts": {
"start-dev": "node lib/server-development",
"start": "node lib/server-production"
}
}
그리고 이는 Webpack 을 실행하기 위한 이 기능의 가장 흔한 방식입니다 :
{
"scripts" : {
"watch": "webpack --watch --progress --colors --config webpack.conf.js",
"dev": "webpack --progress --colors --config webpack.conf.js",
"prod": "NODE_ENV=production webpack -p --config webpack.conf.js"
}
}
즉, 여기서 말하는 Task(임무)란, 쉘에서 실행할 커맨드 라인을 지정해 놓은 것을 말한다.
따라서 잘못 치거나 잊어먹기 쉬운 이러한 기다란 명령어들을 치는 것 대신에,
이렇게 실행 할 수 있습니다 :
$ npm run watch
$ npm run dev
$ npm run prod
'Node.js > Node.js 공식문서' 카테고리의 다른 글
Node.js 의 NODE_ENV 에 따른 차이점 (0) | 2024.09.19 |
---|---|
ECMAScript 2015 (ES6) 와 그 이후 (0) | 2024.09.18 |
V8 자바스크립트 엔진 (4) | 2024.09.15 |
Node.js 공식문서 - Node.js 와 브라우저 간의 차이점 (0) | 2024.09.14 |
Node.js 공식문서 - Node.js 에 대한 소개 (0) | 2024.09.14 |