ProgrammingLang/node.js

[node.js] 3. npm init 및 node.js 사용자 모듈 만들기

jinkwon.kim 2018. 11. 22. 11:21
728x90
반응형

NPM (Node Package Manager)

node.js에서 사용되는 package를 관리합니다.

NPM을 이용한 패치 관리 초기화

#npm init

jinkwon$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (project) test-project
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC)
항목 설명
package name 패키지 이름이 무엇인가?
version  현재 패키지의 버전 명시
description 설명
entry point 패키지를 실행 할 때 처음 실행한 파일
test command  자주 사용하는 명령어 (skip)
git repository git 주소
keywoards 모름 
author 제작자이름
license 라이센스 명시

결과 파일 (package.json)

만들 패키지의 정보를 가지고 있습니다.- main 항목이 entry point 항목 입니다.- script 항목에는 자주 사용하는 명령어를 추가 하면됩니다.

{
  "name": "test-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

외부 패키지 설치

https://www.npmjs.com/ 에서 원하는 패키지 찾은 다음 

설치

$npm install {원파는 패키지며} 으로설치하면됩니다. 

$ npm i randomcolor

이렇게 설치하면 2가지의 변화가 생십니다.

1. package.json파일 변화

"dependencies" 항목이 추가됩니다. 그리고 설치한 package가 추가 된 것을 확인 할 수 있습니다. 

{
  "name": "test-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "randomcolor": "^0.6.2"
  }
}

패키지의 버전 범위 표현 방식

  • 틸트(~): 틸트 뒤에 오는 마이너 버전이나 패치 버전 이내의 최신 버전을 설치합니다.
    예를 들어, ~1.2.3은 1.2.3 이상 1.3.0 미만의 버전을 의미합니다.
  • 캐럿(^): 캐럿 뒤에 오는 메이저 버전 이내의 최신 버전을 설치합니다.
    예를 들어, ^1.2.3은 1.2.3 이상 2.0.0 미만의 버전을 의미합니다.
  • 별(*): 어떤 버전이든 설치할 수 있음을 의미합니다.
  • latest: 가장 최신 버전을 설치합니다.

 

2. package-lock.json파일 생성

package-lock.json은 Node.js 프로젝트에서 사용되는 파일로, 프로젝트의 종속성에 대한 정확한 정보를 저장합니다. 이 파일은 NPM v5.0.0 이상에서 사용 가능하며, npm install을 실행할 때 자동으로 생성됩니다.

package-lock.json의 주요 용도는 다음과 같습니다:

  1. 결정론적 설치 프로세스: package-lock.json 파일을 사용하면 동일한 종속성 트리를 다시 생성할 수 있습니다. 즉, 프로젝트를 다른 시스템에서 설치하거나 다시 설치할 때 동일한 버전의 종속성을 보장합니다. 이는 버전 차이로 인한 버그를 방지하는 데 도움이 됩니다.
  2. 보안: package-lock.json 파일에는 종속성에 대한 해시 체크섬이 포함되어 있습니다. 이 체크섬을 통해 패키지가 변경되거나 조작되지 않았음을 확인할 수 있습니다.
  3. 성능 개선: package-lock.json 파일이 있으면 NPM은 이를 사용하여 종속성 트리를 재구성하므로, 패키지 메타데이터를 가져오는 데 필요한 네트워크 요청을 줄일 수 있습니다. 이로 인해 설치 과정이 빨라집니다.

package-lock.json 파일은 VCS(버전 관리 시스템, 예: git)에 추가해야 합니다. 이렇게 하면 개발자 간에 동일한 종속성이 보장되고, CI/CD(지속적 통합/지속적 배포) 도구가 프로젝트를 정확하게 빌드할 수 있습니다.

모듈이란?? 

특정한 기능을 따로 구분하여 사용하기 편하게 모아 놓은 것. 

node.js 모듈  종류

Core 모듈   

- node.js 에서 기본적으로 제공하는 모듈    - require("module").builtinModules 로 확인 가능하다.   (일부만 표시)[ 'async_hooks',  'fs',  'http',  'http2',  'https',  'inspector',  'module',  'net',

더보기
  'os',  'path',  'perf_hooks',  'process',  'punycode',  'querystring',  'readline',  'repl',  'stream',  'string_decoder',  'sys',  'timers',  'tls',  'tty',  'url',  'util',  'v8',  'vm',  'zlib',   ]

third party 모듈

- npm(Node Packaged Modules)으로 설치한 모듈(node_modules 폴더 아래 설치됨)

- 종류는 너무 많아 (https://www.npmjs.com/) 여기서 찾는게 좋습니다.

local 모듈   

사용자가 만든 모듈

node.js 모듈은 설치 방법

Core 모듈   

기본적으로 node.js 에서 제공하기에 설치가 필요 없습니다.

third party 모듈 

node.js 에서 모듈 관리는 npm을 통해서 이루어 집니다.  

npm을 통해서 설치, 업데이트, 삭제 를 할 수 있습니다.   

global 설치

- "npm install -g  모듈명" 을 통해서 설치 합니다.

- 모든 프로젝트에서 사용 가능합니다.

local 설치

- "npm install 모듈명" 을 통해서 설치가 됩니다.

- 설치되는 위치는 프로젝트 하위의 node_modules에 설치가 됩니다.

- 설치된 프로젝트에서만 사용 가능합니다

삭제 

- "npm uninstall 모듈명"   

업데이트 

- "npm update 모듈명"   

검색

- "npm search 모듈명"    

local 모듈  

- local 모듈을 만들어 주어야한다.   

- 사용자가 만든것이기 때문에 설치 할 필요가 없다.

node.js 모듈은  설치 위치

Core 모듈     

- 내장 모듈입니다.
third party 모듈   

global 설치 위치

C:\Users\jk722\AppData\Roaming\npm\node_modules

local 설치 위치

현재 프로젝트하위의 node_modules 에 설치가 된다.

local 모듈  

- 사용자가 만든것 이기 때문에 지정하기 나름이다.

node.js 모듈을 사용방법

commonjs 모듈 시스템을 사용하는 경우

const test = require("core모듈명")

node.js 모듈을 검색 경로

모듈을 생성했는데 모듈을 찾지 못 할 경우 node.js에서 어떤 순서로 모듈을 찾는지 알 필요가 있다.

global 모듈 검색 위치

    - cmd 에서 아래 명령어로 확인가능 

    > "npm -g root" 로 확인 가능합니다.

      C:\Users\jk722\AppData\Roaming\npm\node_modules

third party 모듈 또는 local 모듈 검색 위치

- 현재 경로에서 하단계씩 올라가면서 node_modules를 찾는다.

- cmd에서 아래 명령어로 확인 가능

> node -e "console.log(global.module.paths)"

[ 'D:\\jk_nodejs\\node_modules', 'D:\\node_modules' ]

사용자 모듈 만들기

사용자 모듈이란?

- 사용자가 코드관리는 위해 기능적으로 코드를 분리한 코드를 모듈이라고 한다.

생성 방법

- node.js에서 모듈은 파일 하나를 의미 합니다.

- 모듈 파일에서 exports객체에 메소드 및 프로퍼티를 추가 하면 해당 파일은 모듈로써 사용하겠다는 의미 입니다.

const add = (a, b) => a + b;
const sub = (a, b) => a - b;

// nodejs의 commonjs 모듈 시스템으로 객체 단위로 모듈 내보내기
module.exports = {
    moduleName: "calc modlue",
    add: add,
    sub: sub,
}

사용방법

- require('모듈파일명')를 통하여 모듈을 로드 하여 사용 가능 합니다.

- 다음 예제 코드 입니다.

  상기 모듈코드에서 만든 메소드(abs, circleArea), 프로퍼티(module_name)을 사용한 에제 입니다 

// nodejs의 commonjs 모듈 시스템의 내장함수 require로 module 불러 오기
const calc = require("./calc");

console.log(calc);
console.log(calc.add(1, 2));
console.log(calc.sub(3, 1));
728x90
반응형

'ProgrammingLang > node.js' 카테고리의 다른 글

[npm] 에러 해결 모음  (0) 2022.04.30
[node.js] 2. 전역 변수 및 전역 객체  (0) 2018.11.21