개발 환경을 이해하고, 구성하는데 NodeJS는 중요합니다. 왜일까요?
이를 알기 전에 Node.js가 무엇인지 알아야겠네요. 이를 알기 위해서는 공식 문서를 확인해봅시다.
Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다.
JavaScript는 스크립트 언어이기 때문에, 이를 해석해줄 환경이 별도로 필요합니다. 주로 사용해왔던 실행 환경은 바로 브라우저의 개발자 콘솔입니다. 브라우저 외부에서는 js를 사용할 수 없었습니다. 즉, 기존 javascript 개발 환경은 브라우저에 종속적이었던 것이죠. node.js와 같은 실행기가 만들어지기 이전에는 IDE에서 코드 작성 후, 브라우저에서 결과를 보고, 수정 작업을 거쳐왔었습니다.
이러한 문제를 해결하기 위해 Node.js를 사용합니다. Node.js은 js 런타임 환경이므로, 브라우저 없이도 js를 실행할 수 있게 됩니다.
npm 공식 홈페이지에서는 npm을 아래와 같이 설명하고 있습니다.
npm은 세계에서 가장 큰 소프트웨어 레지스트리입니다. 모든 대륙의 오픈 소스 개발자들은 npm을 사용하여 패키지를 공유하고 빌립니다. 많은 기관들은 또한 private 개발을 관리하기 위해 npm을 사용합니다
npm은 Node.js로 만들어진 자바스크립트 모듈을 설치하고 관리하는 도구입니다. 개발자는 명령어를 통해 공개된 모듈을 설치하고 활용할 수 있게 됩니다.
(Java의 maven
, gradle
와 같은 빌드툴과 비슷합니다)
npm init
package.json
파일을 생성됨을 확인할 수 있습니다.package.json
: name
과 version
을 통해 각 패키지의 고유성을 판별하게 됩니다. 따라서 패키지의 내용을 변경하려면 version을 변경해야 합니다.
name
: 필수 속성version
: 필수 속성scripts
: 패키지의 생명주기 중 다양한 타이밍에 실행되는 script 명령들을 포함하고 있는 사전scripts
항목 객체에서 키는 이벤트이고, 값은 이 때 실행될 커맨드입니다.main
: 프로그램의 시작점이 되는 모듈의 IDfoo
라는 패키지가 있다면 이 패키지를 사용자(개발자)가 설치한 뒤, require('foo')
를 실행했을 때, main
으로 지정한 모듈의 exports 객체
가 반환됩니다.node.js는 버전 번호를 관리하기 위한 규칙이 존재하는데, 이를 유의적 버전(Sementic Version)이라고 합니다.
유의적 버전을 명세하는 것에서 그치지 않고, 버전의 범위를 자신만의 규칙으로 관리합니다.
1.2.3
>1.2.3
>=1.2.3
<1.2.3
<=1.2.3
~1.2.3
: 1.2.3
부터 1.3.0
미만까지를 포함~0
: 0.0.0
부터 1.0.0
미만까지를 포함^1.2.3
: 1.2.3부터 2.0.0 미만까지를 포함^0.0
: 0.0.0부터 0.1.0 미만까지를 포함과거에는 틸트를 사용했지만 최근에는 캐럿을 사용합니다. 왜냐하면 라이브러리 정식 릴리즈 전에는 패키지 번호가 수시로 변경됩니다. 이 때, 0.1에서 0.2로 Minor가 변경되었을 때, 유의적 버전의 의미를 신경쓰기보다는 하위호환성을 지키지 않고 배포하는 경우가 빈번합니다. 때문에, 이를 보완하는 캐럿 범위를 사용하게 되는 것이죠.
출처
- 프론트엔드 개발환경의 이해 (인프런)
- https://resucito.tistory.com/22
- https://programmingsummaries.tistory.com/385