Node.js 당신은 누구인가?

김석완·2019년 10월 28일
0

Summary

간단하게 설명하자면, 자바스크립트으로 작성된 라이브러리이다. 쉽게 말해서 각종 프로그램을 관리하기 위해 만들어졌다고 생각하면 된다. Node.js는 Chrome V8엔진으로 빌드되어 있는데, V8은 웹 브라우저를 만드는데 사용하는 오픈소스이다. 최초 버전은 2009년 리눅스 기반으로 출시하였으며, NPM이 2011년에 처음 소개가 되었다. NPM은 뒤에서 다뤄볼 것이다.
[2019.10.22] 기준으로 13.0 버전이 릴리즈 되었고, assert, build, child_process, console, deps, domain, http, fs, lib, src, stream 등 변동사항이 있었다. 자세한 내용은 아래의 링크를 참고하도록 한다.
더 언급하자면, Node.js는 PHP, ASP와 비교하면 파일 요청을 다룰 때 시간을 단축시키고 메모리를 효율적으로 사용할 수 있도록 한다.

https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V13.md#13.0.1

NPM

Node Package Manager의 약자로 자바스크립트를 관리자이다. 온라인 데이터베이스로 이루어져 있으며 클라이언트로 접근이 가능하고 해당 웹사이트에서 검색할 수 있다.

Dependency tree

npm의 install은 의존성 트리라고 할 수 있다. 모든 패키지는 자체 의존성을 갖는다.
아래의 그림과 같이 빨간색으로 표시한 react와 react-dom을 보면 각각의 트리라고 할 수 있는 의존성을 지닌다. 해당 예시는 같은 패키지와 버전을 공유하고 있지만, 서로 다른 버전을 지닐 수 있다. 여기서, 버전 충돌이 일어날 수 있다. 다행인 것은 자체 의존성을 지니고 있어서 같은 패키지에 다른 버전이 들어가도 된다는 것이다. react와 react-dom의 자식 중 loose-envity가 있는데 둘 서로는 버전이 달라도 된다는 것이다. 그러나, react 바로 아래 loose-envity가 버전이 1.4.0이 아닌 다른 버전이 설치된다면 충돌이 일어난다는 것이다.

Peer dependencies

npm 의존성 리스트를 보면 package.json파일에 'dependencies'라는 key값이 있다.
package.json파일에 대해 살펴보면, 먼저 초기화를 시키기 위해서 다음과 같은 코드를 Macos에서는 터미널을 Windows에서는 cmd 창을 실행한다.

' $ npm init '

그러면 그림과 같은 항목을 작성하게 되어 있다.

package.json 파일은 dependencies를 관리하는 문서입니다. 만약, 이미 작성된 파일은 어느 곳에서나 동일한 개발 환경을 구축할 수 있게 해줍니다. 다음과 같은 옵션을 살펴봅시다.

name

URL 사용될 소문자로 표기된 214자 이내의 프로젝트(패키지) 이름으로, 간결하고 직관적인 이름으로 설정합니다. 대신 다른 모듈과 겹치지 않도록 합니다.

version

npm - semver
https://docs.npmjs.com/misc/semver

description

프로젝트의 설명을 지정합니다.

keywords

프로젝트의 키워드를 배열로 지정합니다.

Homepage

프로젝트로 연결되는 URL을 지정합니다.

bugs

패키지에 문제가 있을 때 추적시스템 및 이메일 주소를 입력합니다.

license

패키지 사용을 허용하는 방법과 제한 사항을 알 수 있도록 라이센스를 부여합니다.

files

패키지가 의존성으로 설치될 때, 같이 포함될 파일들의 배열입니다.

git repogitory

git 주소를 입력한다.

script

패키지 라이프 사이클에서 여러 번 실행되는 스크립트 명령을 포함합니다.

dependencies

배포 시 포함될 의존성 모듈을 지정합니다.

devDependencies

개발 시 포함될 의존성 모듈을 지정합니다.

private

npm에서 패키지의 공개 여부를 지정합니다.

author

제작자의 이름을 입력합니다.

profile
hello, welocome to wani-a review!!

0개의 댓글