Js - 1. 개념정리

8906 단어 npmNodeNode

2021.04.27

Node.js 란?

  • 웹브라우저에서 쓰이는 자바스크립트를 서버에서 사용가능하게 해준다.
  • 어떻게 가능한가? : V8엔진의 탑재
  • V8이란? : 크롬에 탑재된 자바스크립트 엔진이다.
  • 대용량 서비스를 위해 Ryan Lienhart Dahl이 개발
  • 위키백과

설치하기

  • nodejs 홈페이지에 접속하여 사용자의 os에 맞게 설치한다.
  • LTS버전으로 설치를 해준다.
  • LTS : 장기적인 지원을 받는 버전 (안정적인 버전)
  • Current :nodejs의 최신 기능을 지원하는 버전
  • 터미널창에 node --version or node -v 명령어를 입력해서 잘 설치되었는지 확인한다.

모듈 패턴

  • Node.js는 모듈 시스템의 사실상 표준(de facto standard)인 CommonJS를 채택하였고 현재는 독자적인 진화를 거쳐 CommonJS 사양과 100% 동일하지는 않지만 기본적으로 CommonJS 방식을 따르고 있다.
  • 모듈은 module.exports 또는 exports 객체를 통해 정의하고 외부로 공개한다. 그리고 공개된 모듈은 require 함수를 사용하여 임포트한다.
  • node.js가 설치되었기 때문에 node명령어를 사용할 수 있다.
  • 터미널에 node <filename> 명령어를 입력하면 실행이 된다.
  • 내보낼때 : Module.exports 변수
  • 불러올때 : require 파일명

npm

  • npm (노드 패키지 매니저/Node Package Manager)은 자바스크립트 프로그래밍 언어를 위한 패키지 관리자이다

  • Node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할과 패키지 설치 및 관리를 위한 CLI(Command line interface)를 제공한다.

  • 자신이 작성한 패키지를 공개할 수도 있고 필요한 패키지를 검색하여 재사용할 수도 있다.

  • npm js 홈페이지 - 다른사람이 만든 사용가능한 npm패키지(모듈)들을 찾아보고 검색할 수 있다.

  • 패키지 설치

    npm install <package> : npm install명령어 뒤에 설치할 패키지 이름을 지정한다.

    • npm install명령어는 지역(local)과 전역(global)설치 옵션이 있다. 옵션을 따로 지정하지 않을 시 지역으로 설치된다.
    • 프로젝트 루트 디렉터리에 node_modules디렉터리가 자동 생성되고 그 안에 패키지가 설치된다.
    • 지역으로 설치된 패키지는 해당 프로젝트 내에서만 사용이 가능하다.
    • 전역으로 설치된 패키지는 전역에서 참조할 수 있다. 모든 프로젝트가 공통 사용하는 패키지는 전역에 설치한다.
    • 전역에 설치된 패키지는 OS에 따라 설치 장소가 다르다.
      - macOS의 경우
      : /usr/local/lib/node_modules
      - 윈도우의 경우
      : c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules
      # 지역설치
      $ npm install <package>
      # 전역설치
      $ npm install -g <package>
  • package.json

    • Node.js 프로젝트에서는 많은 패키지를 사용하게 되고 패키지의 버전도 빈번하게 업데이트되므로 프로젝트가 의존하고 있는 패키지를 일괄 관리할 필요가 있다.

    • package.json 파일을 통해서 프로젝트 정보와 패키지의 의존성(dependency)을 관리한다.

    • package.json은 JAVA의 maven에서 pom.xml과 비슷한 역할을 한다.

    • package.json을 생성하려면 npm init 명령어를 실행한다.

    • npm init 명령어를 사용하면 프로젝트에 대한 여러 가지 정보를 입력하도록 요구받는다.

    • 이때 입력된 정보를 바탕으로 npm은 package.json 파일을 생성한다.

    • npm init 명령어에 --yes 또는 -y 옵션을 추가한다. 그러면 기본 설정값으로 package.json 파일을 생성한다.

      npm init -y
      
      {
      "name": "", 
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "dependencies": {
          "": ""
      },
      "devDependencies": {},
      "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
      }
    • package.json에서 가장 중요한 항목은 nameversion이다. 이것으로 패키지의 고유성을 판단하므로 생략할 수 없다.

      npm init-y옵션을 사용해 기본 설정값으로 package.json 파일을 생성하면 name은 루트 프로젝트의 이름이 된다.

    • dependencies항목에 해당 프로젝트가 의존하는 패키지의 이름과 버전을 명시함으로써 의존성을 설정한다.

      의존하는 패키지란 프로젝트에서 참조하는 모듈을 의미한다.

    • devDependencies에는 개발 시에만 사용하는 개발용 의존 패키지를 명시한다. (배포시에는 필요없고 개발시에만 필요한 패키지들을 명시)

      npm install명령어에 --save-dev(축양형 -D)옵션을 사용하면 devDependencies에 기록된다.

      $ npm install --save-dev <package>
      $ npm install -D <package>
    • package.json에 명시된 모든 의존 패키지를 한 번에 설치하려면 터미널에 npm install명령어를 입력한다.

  • Semantic versioning(유의적 버전)

    • npm install명령어 뒤에 @버전을 추가하면 패키지 버전을 지정해서 설치가 가능하다.

      $ npm install [email protected]
    • package.jsondependencies에 새롭게 패키지가 추가되고 버전 앞에 ^(캐럿)이 추가된 것을 확인할 수 있다.

    • ^(캐럿)은 이후 해당 패키지의 버전이 업데이트되었을 경우, 마이너 버전 범위 내에서 업데이트를 허용한다는 의미이다.

      //package.json
      "dependencies": {
          "react": "^17.0.1"
      },
    • npm 버전 정보는 메이저 버전 번호, 마이너 버전 번호, 패치 버전 번호로 구성된다.

    • 버전 정보 앞에 기호를 부여하여 업데이트 범위를 지정할 수 있다.

      표기법Description
      version명시된 version과 일치
      >version명시된 version보다 높은 버전
      >=version명시된 version과 같거나 높은 버전
      <version명시된 version보다 낮은 버전
      <=version명시된 version과 같거나 낮은 버전
      ~version명시된 version과 근사한 버전
      ^version명시된 version과 호환되는 버전
    • ~(틸트)와 ^(캐럿)의 차이

      • ~(틸트) : 패치 버전 범위 내에서 업데이트
        • ~0.0.1 : 0.0.1 <= version < 0.1.0
        • ~0.1.1 : 0.1.1 <= version < 0.2.0
      • ^(캐럿) : 마이너 버전 범위 내에서 업데이트
        • ^1.0.2 : 1.0.2 <= version < 2.0
  • 자주 사용하는 npm 명령어 모음

//package.json 생성
$ npm init
# 기본 설정
$ npm init -y

//패키지 설치
# 로컬 설치
$ npm install <package-name>
# 전역 설치
$ npm install -g <package-name>
# 개발 설치
$ npm install --save-dev <package-name>
# package.json의 모든 패키지 설치
$ npm install

//패키지 제거
# 로컬/개발 패키지 제거
$ npm uninstall <package-name>
# 전역 패키지 제거
$ npm uninstall -g <package-name>

//패키지 업데이트
$ npm update <package-name>

//package.json scripts 프로퍼티의 scripts 실행 (지정한 scripts명 입력)
$ npm run <script-name>

//전역 패키지 설치 폴더 확인
$ npm root -g
/usr/local/lib/node_modules
# 파인더 오픈
$ open /usr/local/lib/node_modules

//패키지 정보 참조
$ npm view <package-name>

//버전 확인
$ npm -v

좋은 웹페이지 즐겨찾기