[Node.js] npm과 npx는 무엇인가?
글 작성자: 망고좋아
반응형
🎯 NPM이란?
- Node Package Manager
- Node.js 프로젝트를 관리하는 필수적인 도구
- 온라인 저장소 + 커맨드 라인 도구
- 온라인 저장소란 수많은 오픈소스 라이브러리와 도구들이 업로드되는 저장소이다. 필요 라이브러리나 도구를 손쉽게 검색할 수 있으며 거대한 생태계를 보유
- 커맨드 라인 도구란, 프로젝트 관리를 위한 다양한 명령어를 제공한다.
- 저장소에서 라이브러리, 도구 설치
- 프로젝트 설정 / 관리
- 프로젝트 의존성 관리
📝 프로젝트 생성하기
npm init
- 프로젝트 디렉터리를 생성하고, 해당 디렉터리 안에서
npm init
명령어를 사용하면 몇 번의 질문을 통해 package.json이라는 파일을 만들어 주고 이 디렉터리는 Node.js 프로젝트가 된다.
📕 질문들
package name: (test)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to ~/package.json:
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {},
"author": "",
"license": "ISC"
}
Is this OK? (yes)
📝 package.json
- 프로젝트 관련 정보들이 저장되는 파일이다.
- 이 파일을 직접 수정하거나 npm 명령어를 사용하여 프로젝트 정보를 수정할 수 있다.
📕 구성요소
key | value |
scripts | npm run [script name]으로 실행할 수 있는 사용자 작성 스크립트 |
dependencies | 의존성 패키지들 |
devDependencies | 개발환경에서만 사용하는 의존성 패키지들 |
📝 의존성 관리하기
- 프로젝트 내에서 사용하는 라이브러리를 관리하는 방법이다.
- 프로젝트가 실행되기 위해 라이브러리에 의존하기 때문에 이러한 라이브러리들을 dependency(의존성)라고 이야기한다.
📝 라이브러리란?
- 특정 기능을 수행하는 코드의 묶음이다.
- 복잡한 기능을 직접 작성하지 않고, 다른 사람이 구현한 것을 사용하는 방법이다.
- Node.js에서는 패키지라고도 부른다.
📝 npm install 명령어
- npm install 명령어를 통해 프로젝트 의존성을 관리할 수 있음
- npm install 명령어는 사용 방법에 따라 여러 용도로 사용 가능 (npm i 를 축약형으로 사용 가능)
- 의존성 추가
- 의존성 내려받기
- 개발용 의존성 추가
- 전역 패키지 추가
📝 프로젝트에 의존성 추가하기
npm install package-name
- 필요한 패키지를 프로젝트에 추가할 수 있다.
- 추가된 패키지는 package.json의 dependencies 안에 추가되며, node_modules 디렉터리에 저장된다.
📝 dependencies와 devDependencies
npm install package-name --save-dev
- npm은 개발용 의존성을 분리하여 관리할 수 있다.
- 개발용 의존성이란 배포 전까지만 사용하는 의존성 (ex. 유닛 테스트 라이브러리)
--save-dev
옵션을 이용하면 개발용 의존성을 추가할 수 있다.- 개발용 의존성은 package.json의 devDependencies에 추가된다.
📝 프로젝트에 의존성 내려받기
npm install
- 기본적으로 node_modules 디렉터리는 코드 관리나 배포 시에 업로드하지 않는다.
- 의존성이 많아지면 용량이 너무 커지는 것과, 운영체제별로 실행되는 코드가 다른 경우가 존재하기 때문이다.
- npm install 명령어를 아무 옵션 없이 사용하면 package.json 에 정의된 dependencies와 devDependencies의 의존성을 node_modules 디렉터리에 내려받는다.
📝 개발용 의존성을 제외하고 내려받기
npm install --production
- 프로젝트를 배포할 때에는 개발용 의존성을 같이 포함할 필요가 없다.
- package.json 의 dependencies만 node_modules에 내려받는다.
📕 의존성 버전 표기법
npm install package-name @version
으로 패키지 버전을 지정할 수 있음~1.13.0
: 1.13.x 버전 설치^1.13.0
: 1.x.x 버전 설치, 가장 왼쪽의 0이 아닌 버전을 고정.0.13.0
: 0.13.0 버전만 설치- 프로젝트에 의존성을 추가하면 자동으로 ‘^최신버전’으로 추가가 되는데, 의존성 버전이 갑자기 변경되지 않도록, 설치된 버전을 고정하는 역할을 한다.
📝 전역 패키지 추가
npm install package-name --global
- 패키지를 전역 패키지 디렉터리에 내려받는다.
- 주로 프로젝트에 종속되지 않는 커맨드 라인 도구들을 전역 패키지로 추가해서 사용 Ex) express-generator, pm2
📝 로컬 패키지와 전역 패키지
📕 로컬 패키지
- package.json 에 선언되어 있고, node_modules에 저장된 패키지
📕 전역 패키지
npm install -g
를 통해 내려받아, 전역 패키지 저장소에 저장된 패키지
npm install -g 를 통해 내려받아, 전역 패키지 저장소에 저장된 패키지
📝 의존성 삭제하기
npm remove package-name
- 의존성 패키지를 삭제할 수 있다.
- package.json의 dependencies와 devDependencies에서 삭제하고 node_modules에서도 삭제한다.
📝 스크립트 실행하기
- 스크립트란 간단한 동작을 수행하는 코드이다.
- package.json의 scripts에 선언된 스크립트를
npm run script-name
명령어로 실행할 수 있다.
{ …
"scripts": {
"say-hi": "echo \"hi"\"
},
…
}
npm run say-hi
// "hi"
📕 npm script를 사용하는 이유
- npm script 내에선 의존성 패키지를 사용할 수 있다.
"scripts": {"test": "node_modules/.bin/tap test/\*.js"}
// =>
"scripts": {"test": "tap test/\*.js"}
📕 자주 사용되는 스크립트
- npm 스크립트엔 run을 제외하고 사용할 수 있는 주요 스크립트들이 있다.
- test - 코드 유닛 테스트 등에 사용
- start - 프로젝트 실행
- stop - 프로젝트 종료
- run을 제외하고 사용할 수 있을 뿐, npm 내부적으로 코드를 제공해 주는 것은 아님
🎯 NPX이란?
// npm
npm i cowsay -g
cowsay hi
//npx
npx cowsay hi
- npm 패키지를 설치하지 않고 사용할 수 있게 해주는 도구이다.
- 프로젝트에 추가하거나 전역 패키지로 추가하지 않고, npx를 이용하여 바로 실행할 수 있음
- 자주 사용되지 않지만 한 번씩 사용해야 하는 npm패키지들을 npx를 이용해서 쉽게 빠르게 사용할 수 있다.
npx node@12 index.js
npx node@14 index.js
- npx를 사용하면 Node.js의 특정 버전을 사용하여 js 파일을 실행할 수 있다.
- 프로젝트의 Node.js 버전 별 실행환경을 확인할 때 유용하다.
📝 NPX - github gist 코드 실행
npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32
- gist는 github에 등록된 간단한 코드이다.
- npx를 이용하면 gist 코드를 다운로드하지 않고 바로 실행 가능하다.
- git이 설치되어 있어야 한다. 온라인상의 코드는 어떤 위험이 있을지 모르므로 코드를 잘 확인하고 실행해야 한다.
🏷 요약
📕 명령어
- npm init : 프로젝트 생성
- npm install : 의존성 추가
- npm remove : 의존성 삭제
- npm run : 스크립트 실행
📕 주요 파일 / 디렉토리
- node_modules : 프로젝트 의존성 저장 디렉토리
- package.json : 프로젝트 관리(버전, 의존성, 스크립트...)
- package-lock.json : 의존성 버전 확인
반응형
'프로그래밍 > Node.js' 카테고리의 다른 글
[Node.js] Node.js 모듈의 작성과 사용 (0) | 2021.12.02 |
---|---|
[Node.js] Node.js 모듈 (0) | 2021.12.02 |
[Node.js] Node.js 이벤트 루프 (0) | 2021.12.02 |
[Node.js] Node.js 특징 (0) | 2021.12.02 |
[Node.js] 자바스크립트 콘솔에서 입력 받는 방법 (0) | 2021.11.05 |
댓글
이 글 공유하기
다른 글
-
[Node.js] Node.js 모듈의 작성과 사용
[Node.js] Node.js 모듈의 작성과 사용
2021.12.02 -
[Node.js] Node.js 모듈
[Node.js] Node.js 모듈
2021.12.02 -
[Node.js] Node.js 이벤트 루프
[Node.js] Node.js 이벤트 루프
2021.12.02 -
[Node.js] Node.js 특징
[Node.js] Node.js 특징
2021.12.02