Web Dev/ELICE

27 (2/3) :: npm, npx, node 모듈, ES Module

HJPlumtree 2021. 12. 1. 13:04

엘리스 SW 엔지니어 트랙 27일차

최규범 강사님 온라인 강의날

 

 

NPM(Node Package Manager)

NPM 온라인 저장소

오픈소스 라이브러리 도구

필요한 라이브러리, 도구 검색 가능

Node.js 인기로 거대한 생태계 보유

 

 

npm 사용 / 명령어

 

npm init 

프로젝트 디렉터리에서 사용하면

몇 번의 질문으로 package.json 파일이 생성됨

그럼 이 디렉터리는 Node.js 프로젝트가 된다!

 

package.json

프로젝트 관련 정보 저장되는 파일

직접 or npm 명령어로 수정가능

 

dependency(의존성)

프로젝트가 실행되려면 라이브러리가 필요

라이브러리는 package.json의 dependency에서 관리

이 라이브러리를 dependency 라고 부른다

 

Libaray(라이브러리)

다른 사람의 코드를 가져와서 사용하는 것

Node.js 에서는 Package(패키지)라고도 부른다

 

npm install or npm i 

프로젝트 의존성 관리위한 명령어

 

npm intall [package-name] 

프로젝트에 의존성 추가

package.json의 dependencies안에 추가되고,

node_modules 디렉터리에 저장됨

 

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

개발용 의존성 분리

배표용에 들어갈 필요 없는 패키지는 이렇게 설치

package.json의 devDependencies에 추가됨

예) 유닛 테스트 라이브러리

 

npm install

위 명령어 사용시 node_modules가 없는

처음 시작 프로젝트를 내려 받았을 때

package.json에 정의된

depencies와 devDependencies 의존성을

node_modules 디렉터리에 내려받는다

 

npm install --production

프로젝트의 개발용 의존성 빼고 내려받는 명령어

depencies만 node_modules로 내려받는다

 

npm install [package-name]@[version]

패키지 버전 지정

 

package-lock.json

프로젝트에 의존성 추가시 자동 추가되는 파일

의존성 버전이 변경되지 않도록

설치된 버전 고정하는 역할

 

npm install [package-name] --global or -g

전역 패키지 디렉터리에 내려받는 것

커맨드라인 도구에 주로 사용

예) express-generator, pm2

 

npm remove [package-name]

의존성 삭제

dependencies, devDependencies, node_moudles에서 전부 삭제

 

npm run [script-name]

스크립트 실행

 

 

NPX

npm 피키지를 설치 없이 사용할 수 있게 해주는 도구

한번씩 사용할 것들 사용가능

gist 코드 다운받지 않고 바로 실행 가능

 

npx gits 코드 예시

npx https://gist.github.com/zkat/4bc19503fe9e9309e2bfaa2c58074d32

 

 

Node.js의 모듈

코드를 분리하기위한 방법

모듈의 모음을 패키지라고도 한다

 

 

Node.js의 기본 제공 모듈

console

가장 많이 쓰인다

브라우저의 console과 엄청 유사

 

process

현재 실행 프로세스 관련 기능 제공

 

fs

파일 입출력

 

http

서버, 클라이언트

 

  • url
  • os
  • path
  • crypto
  • 등 등

nodejs.org 에서 확인가능

nodejs org docs 링크 => https://nodejs.org/en/docs/

 

 

모듈의 작성과 사용

require('package-name')

의존성 패키지를 불러오는 것

패키지 사용하려면 node_modules에 내려받아져 있어야된다

 

require('./my-module')

직접 작성한 모듈은 위치를 지정해서 불러온다

 

require('./function-module')

함수형 모듈 불러오면 바로 실행안된다

필요한 시점에 실행해주면된다

 

함수형 모듈 예시

const myFuncModule = require('./function-module')
console.log(myFuncModule(name, age, nationality))

 

json 파일 

require로 json 파일 불러오면

object로 자동파싱

 

module.exports

모듈 작성

 

require

모듈 불러올 때

모듈을 첫 require에만 실행, 그후 cache된 데이터 가져온다

여러번 모듈 실행하고 싶으면 함수형으로 작성

 

 

ES Module vs Node.js

모듈 생성

commonjs: module.exports

ES Module: export

 

모듈 불러오기

commonjs: require

ES Module: import

 

ES Module
ES6 공식 표준 모듈

Node.js
commonjs으로 모듈 사용

현재 ES Module은 Node.js 사용하기에 제약 많음

프로젝트 타입 module로 변경, commonjs 모듈 import시 문제 발생

 

 

npm