😥
데벨업 정말 좋은 기회를 얻게 돼서 열심히 하고 싶었는데... 이렇게나 현실에 치여서 소홀해질 줄이야. 할 수 있는 데까지라도 해봐야겠다. 수업을 제대로 듣지도 못해서 퀘스트에 참가도 못 하고 있는 게 너무 아쉽다.


🔗 바로 실행해보면서 배우는 Node.js

1. npm 소개 및 설치

  • npm

    • Node Package Modules의 약자

    • 노드에서 사용 가능한 모듈들을 패키지화 시켜서 모아놓은 것

    • 확장 모듈의 관리를 쉽게 하도록 도와줌

    • Node.js를 설치하면 기본으로 설치됨

      👉 다른 사람이 만든 모듈을 다운받아 사용할 수 있어서 개발이 쉬워짐!

1) 노드의 확장 모듈과 npm

  • 확장 모듈은 이미 검증되었으므로, 이용하면 생산성이 극대화됨

  • 단, 확장 모듈을 사용하여 개발한 결과물을 배포할 때 확장 모듈도 함께 설치되어야 함

    👉 npm은 확장 모듈을 관리하는 역할!
    (자바의 maven, 리눅스의 rpm, apt-get과 유사)

  • npm 설치 확인
    : npm -v

  • npm 최신 버전 업그레이드
    : npm install -g npm

2. 확장 모듈 설치

  • npm의 확장 모듈은 중앙 저장소에서 관리됨

1) 글로벌 설치(전역 설치)

  • 설치 위치
    • 노드 모듈: {prefix}/lib/node_modules
    • 실행 파일: {prefix}/bin
    • 매뉴얼 페이지: {prefix}/share/man

      {prefix}는 기본적으로 /usr/local

  • 개발의 편의성이나 지속적인 서비스를 위한 도구는 특정 프로젝트에서만 사용하는 것이 아니므로 글로벌로 설치 (ex. nodemon, express)
  • 필요한 경우가 아니라면 지역 설치가 좋음
  • 설치 방법
    • -g 옵션을 통해 설정
    • npm install [모듈명] -g
  • 설치 확인
    : npm list -g

2) 로컬 설치(지역 설치)

  • 설치 위치: 현재 디렉토리
    • 노드 모듈: ./node_modules
    • 실행 파일: ./node_modules/bin/
    • 매뉴얼 페이지: 설치되지 않음
  • 특정 애플리케이션에 국한되어 소스코드에서 require() 메소드를 통해 사용하는 형태인 경우 로컬 설치가 좋음
  • 애플리케이션의 소스가 확장 모듈에 의존성을 가지므로 함께 관리됨
  • 설치 방법
    • -g 옵션 없이 설치
    • 여러 개의 모듈 설치: npm install [모듈1], [모듈2], [모듈3]
    • 특정 버전의 확장 모듈 설치: npm install [모듈명@버전]

3) 원하는 npm 찾아서 설치하기

  • 🔗 npm registry
    • 중앙 저장소에 등록된 모든 확장 모듈을 검색하고 확인할 수 있음
    • 해당 모듈의 이름으로 npm install 명령을 실행하여 다운로드 가능
  • 콘솔에서 npm 검색
    : npm search [모듈명]
  • 콘솔에서 npm 정보 확인
    : npm info [모듈명]

3. 확장 모듈 관리

  • 확장 모듈은 지속적으로 개발되는 경우가 많으므로, 주기적으로 업데이트하거나 필요없는 모듈은 삭제하여 정리해야 함

1) 확장 모듈 목록

  • 로컬 설치 모듈 목록
    : npm list
  • 글로벌 설치 모듈 목록
    : npm list -g

2) 확장 모듈 업데이트

  • 로컬 설치 모듈
    : npm update [모듈명]
  • 글로벌 설치 모듈
    : npm update [모듈명] -g
  • 모든 모듈
    : npm update

3) 확장 모듈 삭제

  • 로컬 설치 모듈
    : npm uninstall [모듈명]
  • 글로벌 설치 모듈
    : npm uninstall [모듈명] -g

4. package.json

  • 노드로 작성한 모듈은 npm을 통해 중앙 저장소에 배포 가능
  • package.json에서 배포한 모듈 정보 관리
  • 확장 모듈에 대한 의존성 관리 가능
  • 직접 작성하거나 npm init 명령으로 자동으로 생성
  • 애플리케이션에 사용된 확장 모듈에 대한 정보는 npm install -save 명령으로 추가
  • 예)
    {
      "name" : "test",
      "description" : "javascript's test programming.",
      "keywords" : ["util", "f", "server", "client", "browser"],
      "author" : "Goorm",
      "contributors" : [],
      "dependencies" : [],
      "repository" : {"type": "git", "url" : "git://gitbub.com/documentcloud/test.git" },
      "main" : "test.js",
      "version" : "1.1.6"
    }
    • name
      • 프로젝트 이름
      • version과 함께 필수항목
      • url로 사용되며, 설치할 때 디렉토리 이름이 되므로 명명규칙 유의
      • node나 js를 사용할 수 없음
      • 214자보다 짧아야 하며, 점(.)이나 밑줄(_)로 시작할 수 없음
      • 대문자를 포함하면 안 됨
      • require() 함수의 인수로 사용되므로 짧고 알기 쉬운 것으로 하는 것이 좋음
    • version
      • 프로젝트 버전
      • 3단계 버전을 사용
      • -로 태그 이름을 적을 수 있음
    • description
      • 프로젝트 설명
      • 문자열로 기술
      • npm search로 검색된 리스트에 표시되므로, 다른 사람이 패키지를 찾고 이해하는 데 도움
    • kewords
      • 프로젝트 검색 키워드
      • description과 마찬가지로 검색된 리스트에 표시됨
    • homepage
      • 프로젝트 홈페이지 주소
      • url 항목과는 다르며, url을 설정하지 않도록 주의
    • author
      • 프로젝트 작성자
      • 한 사람만 지정 가능
      • JSON 형식으로 name, email, url 옵션 포함
    • contributors
      • 프로젝트 공헌자
      • 여러 사람을 배열로 지정 가능
    • repository
      • 프로젝트 소스 코드 저장소
      • 프로젝트 홈페이지 url을 명시해서는 안 됨
    • scripts
      • 프로젝트에서 자주 실행하는 명령어 등록
      • npm 명령어로 실행 가능
    • config
      • 소스 코드에서 환경 변수처럼 사용 가능
    • private
      • true로 작성하면 중앙 저장소에 저장되지 않음
    • dependencies
      • 프로젝트 의존성 관리
      • 사용하는 확장 모듈 정보
      • npm install 명령은 애플리케이션을 설치할 때 이 내용을 참조하여 확장 모듈을 자동으로 설치
    • devDependencies
      • 개발할 때만 의존하는 확장 모듈 관리
    • engine
      • 실행 가능한 노드 버전의 범위 설정

5. 확장 모듈 - nodemon

  • node monitor의 약자
  • 노드가 실행하는 파일이 속한 디렉토리를 감시하고 있다가 파일이 수정되면 자동으로 애플리케이션을 재시작하는 확장 모듈

    👉 개발 중인 노드 애플리케이션의 소스를 수정할 때마다 재시작할 필요가 없으므로 편리!

1) 설치

  • 노드 애플리케이션을 개발할 때마다 사용하므로 글로벌로 설치
  • npm install nodemon -g

2) 사용 방법

  • 실행하고자 하는 애플리케이션을 node 명령어 대신 nodemon으로 실행
  • nodemon app.js