npm, node.js 모듈, npx

skj1211·2022년 5월 9일
0

22.05.09

NPM : node package manager

npm은 온라인 저장소와 커맨드라인 툴로 구성되어있다.
온라인저장소
오픈소스 라이브러라와 도구들이 업로드되는 저장소로 필요한 라이브러리나 도구를 쉽게 검색, 사용 가능
커맨드라인 도구
프로젝트 관리를 위해 다양한 명령어를 제공한다.
저장소에서 라이브러리, 도구 설치
프로젝트 설정/관리, 의존성 관리

npm 사용법

npm init : 프로젝트 디렉터리를 생성하고 디렉터리 안에서 npm init명령어를 사용하면
package.json 파일을 생성하고 해당 디렉터리는 Node.js 프로젝트가 된다.
package.json파일은 프로젝트 관련 정보들이 저장된 파일.

의존성 : 프로젝트 내에서 라이브러리를 관리하는 방법으로 프로젝트가 실행되기 위해서는 라이브러리에 의존하기 때문에 이러한 라이브러리를 dependency(의존성)이라고 함

라이브러리 : 특정 기능을 수행하는 코드의 묶음으로 복잡한 기능을 만들지 않고 다른사람이 이미 만든 것을 사용하는 방법이다. 노드.js에서 패키지 라고도 함

npm install : 프로젝트 의존성을 관리하는 명령어로 npm i로 사용 가능
의존성 추가,내려받기, 전역패키지 추가, 개발용 의존성 추가

npm install [패키지 이름] : 필요한 패키지를 추가한다.
추가된 패키지는 package.json의 dependencies안에 추가되며
node_modules 디렉터리에 자동 저장된다.

npm install [패키지 이름] --save-dev : 옵션 --save-dev를 적용하면
개발용 의존성을 분리하여 관리할 수 있음
개발용 의존성 : 배포 전까지만 사용되는 의존성
개발용 의존성은 package.json의 devDependencies안에 추가

추가된 모든 패키지, 의존성은 node_modules디렉터리에 저장된다.
코드 관리나 배포 시 업로드 하지 않는다. 의존성이 많아지면 용량이 커지고 운영체제별로 실행되는 코드가 다른경우가 있기 때문이다.
npm install 명령어를 아무 옵션없이 사용하면 package.json에 정의된dependencies, devDependencies 의 의존성을 node_modules 디렉터리에 내려받는다.

npm install --production : 위에서 말한 개발용 의존성은 프로젝트를 배포할 때 필요없기 때문에 다음 명령어를 사용하면 package.json의 dependencies 만 node_modules에 내려받는다.

node_modules 사용법 간단한 정리

node_modules에 모든 패키지가 추가됨 -> 용량이 너무 커지고, 운영체제별로 다르게 실행될 수 있음
그렇기 때문에 node_modules은 업로드 하지않는다.
-> package.json에 어떤 패키지가 사용 되었는지 dependenciesdevDependencies 에 짧게 의존성 정의 되어있음
-> 모든 패키지가 추가된 nodo_modules가 없어도 npm install을 옵션 없이 사용하면 package.json내용에 따라 node_modules에 필요한 패키지를 담고 생성된다.

package-lock.json: 프로젝트에 의존성을 추가하면 생기는 파일로 자동으로 '^최신버전'으로 추가되는데, 의존성 버전이 갑자기 변경되지 않도록, 설치된 버전을 고정하는 역할

npm remove [패키지 이름] : 의존성 패키지 삭제, package.json과 node_modules에서 해당 패키지를 모두 삭제한다.

npm run 스크립트 실행, 스크립트란 간단한 동작을 수행하는 코드
npm test 코드 유닛 테스트 등에 사용
npm start 프로젝트 실행
npm stop 프로젝트 종료

NPX

npm패키지를 설치하지 않고 사용할 수 있게 해주는 도구
프로젝트에 추가하거나 전역 패키지로 추가하지 않고 npx로 바로 실행 가능
자주실행 하지않고 가끔 한번씩 하용하는 것들에 사용

Node.js 모듈

간단한 프로그램이라면 파일 하나만으로도 실행이 가능하다. 하지만 프로젝트가 커지면 기능에 맞게 코드를 분리하여 관리하는게 좋다. 이때 모듈은 코드를 분리하기 위한 방법

패키지는 많은 모듈을 모아둔 코드 모음 이라고 생각해도 좋다.

node.js 는 다양한 모듈을 기본적으로 제공하지만 직접 작성하기 어렵거나 복잡한 로직을포함한 모듈이 있으므로 자주 사용되는 기본 제공 모듈을 배둬야 한다.

node.js의 기본 제공 모듈

console :
process : 현재 실행프로세스 관련 기능 제공
fs : 파일 입출력을 하기 위해 사용(백준 알고리즘에서 자주 쓰임) readFile, writeFile 함수로 파일 읽기, 쓰기
http : http 서버, 클라이언트를 위해 사용

0개의 댓글