<회고> 드디어 기다리고 기다리던 immersive코스가 오늘 처음 시작 되었습니다. 오늘은 immersive코스에 본격적으로 들어가기 전immersive과정 중 사용하게 될 JavaScript생태계의 필수 도구 사용법에 대해 배워 보았습니다. 앞으로 배우게 될 기술과 sprint가 기대가 됩니다.
런타임이란 프로그래밍 언어가 구동 되는 환경입니다. 쉽게 말해서 어떤 프로그래밍 언어(javascirpt,java,c,c++)등이 동작할 수 있는 프로그램입니다.
자바스크립트 런타임에는 브라우저, node.js가 있습니다.
node.js가 생기면서 브라우저가 아닌 곳에서 실행이 가능하게 되면서 자바스크립트를 이용해 웹페이지 뿐 아니라 서버와 같은 다른 프로그램을 만들 수 있게 되었습니다.
NVM
은 Node Version Manager
입니다.
node.js도 하나의 프로그램이기 때문에 버전이 존재합니다. 개발을 하다 보면 다양한 node.js버전에 대응해야 할 일이 생깁니다. 예를 들면 Node 10.13.0 버전에서는 내가 짠 코드가 잘 돌아갔는데, Node 12.13.0 버전에서는 안 돌아간다! 하는 일들이 생깁니다. 그럼 Node 12.13.0에서 테스트를 해야 할 것 입니다.
최근 내가 설치한 node가 10.13.0버전이라고 했을 경우에 Node 12.13.0 버전으로 업데이트를 해주어야 합닌다. 업데이트는 쉽게 할 수 있습니다. 그렇지만 이전 버전으로 가려면 node를 지우고 다시 설치해야 하는 상황이 생기게 됩니다. 이렇게 버전을 옮기때 마다 지우고 설치해야 한다면 작업할때 마다 번거로워 지는 상황이 오게 됩니다.
이러한 번거로운 상황을 NVM통해 해소 할 수 있게 됩니다.
NVM을 통해 간단한 명령어로 Node를 설치하고, 다양한 Node version을 손쉽게 옮겨 다닐 수 있습니다.
terminal $ nvm install 10.13.0
NVM설치는 NVM설치 가이드 링크에 잘 설명이 되어 있습니다.
NPM은 Node Package Manager로 일종의 앱스토어입니다. 필요한 모듈을 다운로드할 수 있는, 모듈들이 모여있는 모듈 스토어입니다. 앞으로 필요한 모듈은 대부분 NPM에서 다운로드해서 사용하면 됩니다.
node 모듈을 사용하는 프로젝트에서 npm이라는 키워드는 하나의 명령어처럼 사용되기도 합니다. npm start처럼, 프로젝트를 실행시킬 때 npm 키워드를 사용하기도 합니다.
자신이 만든 프로젝트면 어떠한 모듈이 필요하고 , 프로그램을 어떻게 실행을 시켜야 하는지 잘 알고 있습니다. 하지만 자신이 만든 프로젝트를 다른 사람이 실행시키는 경우에는 어떻게 해야 프로그램을 실행 시킬 수 있을지, 프로그램을 실행시키려면 어떠한 모듈이 있는지 알 수 없습니다.
내가 만든 프로그램을 나 혼자만 개발하고 사용한다면 큰 문제가 되지 않을 수 있지만, 우리는 대부분 다른 사람과 함께 개발하고 사용하게 됩니다. 그럼 다른 사람에게 이 프로젝트에 대해 알려주어야겠죠?! 그 역할을 하는 것이 바로 package.json 입니다.
package.json에는 이 프로그램을 실행시키기 위해 필요한 모듈들이 무엇인지, 프로그램을 실행시키는 방법, 프로그램을 테스트하는 방법 등이 명시되어 있습니다. 직접적인 모듈이 들어있지 않다는 뜻입니다.
중요한 점은 프로그램을 실행시키기 위해 필요한 실제 모듈은 node_modules라는 폴더에 다 들어가 있다는 것입니다. package.json에는 어떠한 모듈인지만 적혀있습니다. 즉 package.json은 프로그램이 돌아가기 위한 모듈 설명서라고 보면 좋을거 같습니다.
package.json이 주는 또 하나의 이점은 프로젝트 코드를 전달할 때, 포함하고 있는 모든 모듈을 다 전달하지 않아도 된다는 점 입니다. 우리는 프로젝트 코드를 넘겨줄 때, "우리 코드는 여기있고, 필요한 모듈은 package.json에 적어 놨으니 너가 직접 다운받아서 쓰면 돼" 라고 하면 됩니다.
Package.json 파일을 작성할 때에는 javaScript의 객체 리터럴이 아니라 올바른 json포맷이어야 합니다.
package.json에서 가장 중요한 항목은 "name"과 "version"입니다. 필소로 입력이 되어야 하며 이 항목들이 누락된다면 패키지는 설치할 수 없습니다.
name과 version을 통해 각 패키지의 고유성을 판별하게 됩니다. 따라서 패키지의 내용을 변경하기 위해서는 version을 변경해야만 합니다.
규칙
version은 반드시 npm의 dependency에 포함된 node-semver로 parsing 가능해야 합니다.
description
설명을 문자열로 기술합니다. npm search로 검색된 리스트에 표기가 되기 때문에 사람들이 자신이 만든 패키지를 찾아 내고 이해하는데 도움이 됩니다.
package.json의 특징이 여러가지 있지만 배워나가면서 습득 할 예정입니다.
Reference