Node.js 당신은 누구인가?

김석완·2019년 10월 28일
0

1*m_Hk0OyZFipUvDT84WtBQA.png

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

25773C4D57A1E6442C.png

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

Dependency tree

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

Peer dependencies

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

' $ npm init '

그러면 그림과 같은 항목을 작성하게 되어 있다.
스크린샷 2019-10-25 오전 11.19.00.png

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개의 댓글