모스카토

NPM과 모듈 본문

엘리스 ai트랙

NPM과 모듈

라리라밤 2022. 2. 16. 15:54

1. NPM 이란 ?

= Node Package Manager

Node.js 프로젝트를 관리하는 필수적인 도구

 

온라인 저장소와 커맨드라인 도구로 구성된다.

  •  온라인 저장소 : 오픈소스 라이브러리, 도구들이 업로드되는 저장소.
  •  커맨드라인 도구 : 프로젝트 관리를 위한 명령어 제공.

npm을 사용하면 프로젝트의 의존성 관리가 쉽다.

  dependency (의존성)   : 프로젝트는 다양한 라이브러리에 의존하여 실행됨. 그 라이브러리들을 dependency 라고 한다.

* 라이브러리 : 특정 기능을 수행하는 코드의 묶음. 다른 사람이 구현한 코드를 사용하는 방법. node.js에서는 패키지라고도 부른다.

 


2. NPM 사용하기

1. $ npm init  : 프로젝트 생성하기

* 프로젝트를 생성할 디렉토리 안에서 명령어를 쳐야한다.

→ package.json 파일이 생성되고, Node.js 프로젝트가  된다.

package.json 파일 : 프로젝트의 버전(version), 이름(name), 설명(description), 사용자 작성 스크립트(scripts : npm run [script name] 으로 실행할 수 있음 ), 의존성 패키지들(dependencies) 등이 있다.

 

2. $ npm install : 프로젝트 의존성 관리하기

① 패키지 추가하기.

$ npm install [ package-name ]

 

package.json파일의 dependencies 에 추가되고, node_modules 디렉토리에 저장된다.

package-lock.json 파일이 자동 생성됨 :  패키지를 설치할 때 자동으로 ^최신버전 패키지가 추가되는데 이 때 버전이 갑자기 변경되지 않게 고정하는 역할을 한다. 

 

개발용 의존성( 배포전까지만 사용하는 의존성 )을 분리하여 관리하기. 

$ npm install [ package-name ] --save-dev

 

→ package.json파일의 devDependencies 에 추가된다.

 

개발용 의존성을 제외하고 내려받기

$ npm install --production

 

프로젝트 외부에서 사용하는 패키지 설치하기.

$ npm install [package-name] --global

 

 패키지를 전역 패키지 디렉터리에 받음.

 

⑤ 패키지 한번에 설치하기

$ npm install

 package.json 에 정의된 의존성을 node_modules 디렉터리에 내려받는다.

배포할 때 용량이 커지므로 node_modules 디렉토리는 업로드 하지 않는다.

 

3. $ npm remove 패키지 삭제하기

$ npm remove [ package-name ]

→ package.json 파일의 dependencies, devDependencies에서 삭제하고 node_modules 디렉토리에서도 삭제된다.

 

** 로컬패키지 : package.json과 node_modules 에 저장된 패키지

** 전역 패키지 : npm install -g 로 받고, 전역 패키지 저장소에 저장된 패키지.

→ 프로젝트를 관리할 때 package.json에 패키지들이 명시되어 있는 것이 좋다.

 

4. npm run [ script-name ]

→ package.json 의 scripts에 선언된 코드 실행

npm script 에선 의존성 패키지를 import 하지 않고 사용가능하다.

$ npm test     // 코드 유닛 테스트에 사용

$ npm start    // 프로젝트 실행

$ npm stop     // 프로젝트 종료

 


3. NPX 란?

npm 패키지를 설치하지 않고 사용할 수 있게 해주는 도구

gist 코드도 바로 실행 가능하다.

gitst 코드 : github에 등록된 간단한 코드

 


4. Node.js의 모듈

모듈 : 프로젝트가 커지면 반복되는 코드를 분리하여 모듈화한다.

패키지 : 모듈의 모음.

 

Node.js 기본제공모듈

① console : 디버깅 도구.

log, warn, error 함수로 로그 레벨 표시

time, timeLog, timeEnd 함수로 시간 추적

 

② process : 현재 실행중인 프로세스 관련 기능 제공.

arch, argv, env 등 실행 환경, 변수 관련 값

abort, kill, exit 등 프로세스 동작관련 함수

 

③ fs : 파일 입출력

readFile : 파일읽기

writeFile : 파일 쓰기

readFileSync, writeFileSync : 파일 읽기, 쓰기 동기 동작

watch : 파일, 디렉터리 변경 이벤트 감지

 

④ http : http 서버, 클라이언트 생성

createServer : 서버생성

Requst : http 요청 생성.

 

⑤ url : url 파싱

⑥ os : 운영체제 정보

⑦ Path : 디렉터리 string 관련 작업

⑧ crypto : 암호화, hash관련 함수 제공

...

 


5. 모듈의 작성과 사용

1. 모듈 내보내기

① exports.키 = 값;

② module.exports = { name, age, gender }

③ module.exports = ( name, age, gender ) => {

    return { name, age, gender }

}

 

2. 모듈 사용하기

① require(' 가져올 모듈이 있는 파일의 상대경로 ') : .js 파일이면 해당 파일을 가져오고, 디렉토리이면 그 안의 index.js 파일을 가져온다.

처음 require할 때 모듈 코드가 실행되고, cache로 저장된다. 다른 파일에서 다시 같은 모듈을 실행할 수 없다.

여러번 실행하려면 모듈을 함수로 작성해야 한다.

 

② const myFunction = require('./my-function')

함수형 모듈은 require해도 바로 실행되지 않고, 함수를 실행하여 모듈을 사용한다.

 

 require( ' 패키지 이름 ' ) : 의존성 패키지 load.

* node_modules에 있는 패키지만 가능.

 

④ const myData = require( ' ./my-data ' ) : json 파일 가져오기.

자동으로 object로 파싱된다.

 


6. ES  Module

= ES6 에서 등장한 JavaScript의 공식적인 표준 모듈

Node.js 의 독자적인 common js 와 ES 는 문법과 동작방식이 서로 다르다.

'엘리스 ai트랙' 카테고리의 다른 글

Express.js와 REST API  (0) 2022.02.18
익스프레스 시작하기  (0) 2022.02.18
Node.js 기초  (0) 2022.02.16
Axios API 사용하기  (0) 2022.02.12
sql로 데이터 다루기2  (0) 2022.02.11
Comments