keyword
Node.js, npm, yarn, webpack, babel, package.json, package-lock.json, yarn.lock
코드샌드박스 React 연습창 : https://codesandbox.io/s/new
개발환경 설정
node.js, yarn, VS Code
Node.js
Node.js
설치
📌 Windows 의 경우엔, Node.js 공식 홈페이지 에서 좌측에 나타나는 LTS 버전을 설치해주세요.
📌 macOS / Linux 의 경우엔, nvm 이라는 도구를 사용하여 Node.js 를 설치하시는 것을 권장.
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
$ nvm install --lts
🌼 Node.js
: Chrome V8 JavaScript 엔진 위에서 동작하는 JavaScript 런타임(환경)
런타임 : 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 의미.
자바스크립트 런타임 : 2008년에 구글이 V8 엔진을 사용하여 크롬을 출시함. 이후 2009년 라이언 달(Ryan Dahl)은 다른 자바스크립트 엔진과 달리 매우 빠른 V8 엔진 기반의 노드 프로젝트를 시작하며 세상에 나오게 됨.
Node.js는 스크립트 언어가 아닌 '환경'이다.
노드를 통해 다양한 자바스크립트 애플리케이션을 실행.
사용 언어로는 자바스크립트(Javascript)를 활용.
Node.js가 JavaScript 를 웹 브라우저에서 독립시킴
Node.js를 이용하여 서버를 만들 수 있다.
Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있는 것이 특징이다.
(+) Node.js 장점
- 웹 서버가 내장되어 있어 별도의 웹서버를 설치할 필요가 없다.
- I/O 작업이 많은 서버로 적합하다.
- 멀티 스레드 방식에 비해 적은 컴퓨터 자원을 사용한다.
- 노드는 기본적으로 싱글 스레드, 논 블로킹 모델을 채용하므로 I/O 요청이 많이 발생하면 노드를 서버로 사용하는 것이 좋다.
- 하지만 노드는 CPU 부하가 큰 작업에는 적합하지 않다. 우리가 작성하는 코드는 모두 스레드 하나에서 처리되기 때문에 코드가 CPU 연산을 많이 요구하면 스레드 하나가 혼자서 감당하기 어렵다.
- 즉, 개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는데 노드는 적합하다. 예를 들어 네트워트나 데이터베이스, 디스크 작업 같은 I/O에 특화되어있다. 실시간 채팅 애플리케이션, 주식 차트도 포함된다.
- 자바스크립트를 사용하기 때문에 JSON 형식과 쉽게 호환된다.
Yarn
Yarn
설치
npm install --global yarn
yarn --version
🌼 조금 개선된 버전의 npm
🌼 페이스북에서 만든 자바스크립트 패키지 매니저
🌼 장점 : 속도(performance), 안정성(stability), 보안성(security)
npm
& yarn
공통점
: 자바스크립트 패키지 매니저
npm
& yarn
차이점
(1) 속도 : 병렬 설치 (Parallel installation of packages)
(2) 안정성 : 자동 lock 파일 생성 (Automatic Lock file generation)
npm : 기본적으로 잠금 파일을 생성하지 않음. npm-shrinkwrap.json 파일이 존재 하는 경우에만 업데이트 된다고 함.
yarn은 (종속성이 추가되면) 항상 yarn.lock파일을 자동으로 생성하고 업데이트함.
문제 예시: 예를 들어 A란 package의 최신 버전이 릴리즈 되어서 A package를 사용하려고 해도 다른 package에서 종속성에 문제가 발생하면 A package를 쓰지 못하거나 A package와 종속성이 관련된 package들를 찾아서 같이 버전업 해줘야 사용 가능하다.
(3) 보안성 :
npm VS. yarn 다른 명령어
npm VS. yarn 같은 명령어
추가 노트
- npm 업데이트 이후, 속도는 근소한 차이
- Yarn 장점 : 안정성, 보안성 >>> 속도
- Yarn 단점 : 디스크 용량을 좀 더 많이 잡아먹는 편
Code Editor
: VS Code 설치
Webpack 과 Babel
보통 Webpack Bundler + Babel Loader = React 프로젝트 빌드.
리액트 프로젝트를 만들게 되면,
Webpack
: 여러가지의 파일을 1개로 결합하기 위해서 사용
Babel
: JSX 를 비롯한 새로운 자바스크립트 문법들을 사용하기 위해서 사용 (=JavaScript Transpiler/Compiler)
리액트 새 프로젝트 만들기
$ npx create-react-app 폴더명
$ cd 폴더명
$ yarn start 또는 npm start
(+ 추가)
package.json이란?
: 프로젝트 정보와 의존성(dependencies)을 관리하는 문서.
: 우리가 어떤 패키지(오픈소스)를 사용하는지, 패키지의 어떤 버전을 사용하는지 까지를 기록함으로써 어느 곳에서도 동일한 개발 환경을 구축할 수 있게 해줌.
< 참고 >
< 더 읽어보기 >