블로그 목록

프론트엔드 필수 도구: npm/Yarn 건축 자재 조달 완벽 가이드

혹시 아파트를 지을 때, 철광석을 캐서 직접 철근을 만들고, 산에서 나무를 베어와 문짝을 짜는 건설사를 본 적 있으신가요? 아마 없을 겁니다. 현대 건축의 핵심은 '검증된 최고급 자재를 얼마나 효율적으로 조달하여 조립하느냐'에 달려 있습니다. 웹 개발도 이와 정확히 똑같습니다.


지난 7편에서 우리는 VS Code라는 튼튼한 '설계 사무소'를 차리고, Git이라는 '도면 이력 관리 시스템'까지 완벽하게 구축했습니다. 이제 본격적으로 리액트(React)라는 최신 모듈형 건축 공법을 배울 차례입니다. 하지만 그 전에 반드시 해결해야 할 과제가 있습니다. 바로 전 세계의 뛰어난 장인(개발자)들이 미리 만들어둔 '기능(라이브러리)'을 우리 현장으로 안전하게 가져오는 조달 시스템을 구축하는 일입니다.


오늘은 프론트엔드 개발의 거대한 자재 물류 센터이자 조달 시스템인 npm과 Yarn에 대해 부동산 현장의 언어로 쉽고 명확하게 풀어보겠습니다.


1. 맨손으로 아파트를 짓지 마세요: 패키지 매니저의 등장

과거의 웹 개발자들은 필요한 기능이 있으면 인터넷을 뒤져 코드를 복사해 오거나, 파일을 직접 다운로드하여 프로젝트 폴더에 집어넣었습니다. 마치 건축 자재를 구하러 전국 팔도의 철물점을 직접 돌아다니는 것과 같았죠. 자재에 하자가 생기거나 업그레이드가 필요하면 다시 철물점을 찾아가야 하는 끔찍한 비효율이 발생했습니다.


이러한 문제를 해결하기 위해 등장한 것이 바로 패키지 매니저(Package Manager)입니다.


💡 패키지(Package)란?
특정 기능을 수행하도록 미리 작성된 코드의 묶음입니다. 달력 기능, 이미지 슬라이더, 데이터 분석 도구 등 웹 개발에 필요한 '완제품 창틀'이나 '빌트인 가구'라고 생각하시면 됩니다. 이를 다른 말로 라이브러리(Library)라고도 부릅니다.


npm(Node Package Manager)은 전 세계에서 가장 큰 소프트웨어 레지스트리(물류 센터)입니다. 현재 200만 개가 넘는 패키지가 등록되어 있으며, 프론트엔드 개발자는 터미널에 명령어 한 줄만 입력하면 전 세계 어디서든 원하는 최고급 건축 자재를 내 프로젝트 현장으로 즉시 배송받을 수 있습니다.


2. 건축 자재 명세서, package.json 완벽 해부

현장에 자재를 무턱대고 쌓아둘 수는 없습니다. 어떤 자재가 몇 개 들어왔고, 규격(버전)은 무엇인지 정확히 기록해두는 '자재 명세서'가 필요합니다. 프론트엔드 프로젝트에서 이 역할을 하는 것이 바로 package.json 파일입니다.


터미널에서 npm init 명령어를 입력하면 이 명세서가 생성되는데, 여기서 가장 중요한 두 가지 항목을 반드시 구분할 줄 알아야 합니다.


① dependencies (건축 필수 자재)

이곳에 기록되는 패키지들은 실제 아파트가 완공된 후에도 입주민(사용자)이 직접 사용하는 핵심 자재들입니다. 예를 들어, 리액트(React) 프레임워크 자체나, 화면의 날짜를 계산해주는 라이브러리(Day.js) 등이 여기에 속합니다. 벽지, 마루, 빌트인 에어컨처럼 건물의 일부가 되는 필수 요소들입니다.

  • 설치 명령어: npm install 패키지명

② devDependencies (건설 현장용 장비)

반면, 이곳에 기록되는 패키지들은 아파트를 짓는 '과정'에서만 필요하고, 완공 후에는 철거되는 장비들입니다. 코드를 예쁘게 정리해주는 도구(Prettier), 코드의 에러를 잡아주는 도구(ESLint) 등이 포함됩니다. 공사장의 타워크레인이나 외부 비계(아시바)를 입주민에게 제공하지 않는 것과 같은 이치입니다.

  • 설치 명령어: npm install -D 패키지명 (또는 --save-dev)

⚠️ 주의: node_modules와 Git의 관계

패키지를 설치하면 프로젝트 폴더 내에 node_modules라는 거대한 폴더가 생깁니다. 이곳은 주문한 자재들이 실제로 쌓여 있는 '임시 창고'입니다. 용량이 수백 MB에서 수 GB에 달할 정도로 매우 무겁습니다.

지난 7편에서 Git을 다룰 때, 모든 코드를 클라우드(GitHub)에 올린다고 했었죠? 이때 node_modules 폴더는 절대 Git에 올리면 안 됩니다. 도면(package.json)만 공유하면, 다른 개발자가 그 도면을 보고 npm install 명령어 한 번으로 자신의 컴퓨터에 똑같은 자재 창고를 자동으로 구성할 수 있기 때문입니다. 도면을 팩스로 보내면 될 것을, 덤프트럭에 건축 자재를 싣고 배달할 필요는 없는 것이죠. (이를 위해 .gitignore 파일에 node_modules를 반드시 등록해야 합니다.)


3. npm vs Yarn, 우리 현장에는 어떤 조달 시스템이 맞을까?

현대 프론트엔드 씬에서는 두 가지 조달 시스템이 양대 산맥을 이루고 있습니다. 기본 탑재된 npm과 페이스북(Meta)에서 만든 Yarn입니다. 어떤 것을 선택해야 할까요?


비교 항목npm (Node Package Manager)Yarn
특징Node.js 설치 시 기본 제공되는 업계 표준npm의 단점(속도, 보안)을 개선하기 위해 등장
설치 속도패키지를 순차적으로 설치 (다소 느림)패키지를 병렬로 설치 (매우 빠름)
보안성과거 취약점이 있었으나 최근 크게 개선됨설치 시 체크섬 검증으로 높은 보안성 자랑
명령어 예시npm install, npm run startyarn add, yarn start

부동산 칼럼니스트의 실전 팁: 최근에는 npm도 업데이트를 거듭하며 속도와 보안이 Yarn 못지않게 좋아졌습니다. 초보자라면 별도의 설치가 필요 없는 npm으로 시작하는 것을 추천합니다. 이후 대규모 프로젝트나 속도 최적화가 필요한 엔터프라이즈 환경으로 넘어가게 될 때 Yarn(또는 최근 각광받는 pnpm)을 도입해도 늦지 않습니다.


4. 버전 관리의 마법: 시맨틱 버저닝 (SemVer)

package.json을 열어보면 패키지 이름 옆에 "react": "^18.2.0" 처럼 숫자가 적혀 있습니다. 이를 시맨틱 버저닝(Semantic Versioning)이라고 합니다. 건축 자재의 규격 변경을 의미하는 이 세 자리 숫자의 비밀을 알아야, 현장이 붕괴되는 대참사를 막을 수 있습니다.


  • 메이저(Major) 버전 - 18.x.x: 기존 건물 구조를 완전히 뜯어고치는 '재건축' 수준의 변화입니다. 이전 버전과 호환되지 않을 수 있으므로, 함부로 업데이트하면 프로젝트가 멈출 수 있습니다.
  • 마이너(Minor) 버전 - x.2.x: 기존 구조는 유지한 채 '엘리베이터를 추가'하는 등 새로운 기능이 더해진 것입니다. 기존 코드에 영향을 주지 않고 안전하게 업데이트가 가능합니다.
  • 패치(Patch) 버전 - x.x.0: 누수된 배관을 고치듯, 기존 기능의 '버그(오류)를 수정'한 버전입니다. 언제든 안심하고 최신 버전으로 유지하는 것이 좋습니다.

숫자 앞의 ^ 기호는 "마이너와 패치 버전까지는 자동으로 업데이트를 허용하겠다"는 뜻입니다. 이처럼 패키지 매니저는 우리가 신경 쓰지 않아도 자재의 하자를 자동으로 보수해 주는 든든한 현장 소장 역할을 합니다.


5. 실전! 내 프로젝트에 최고급 자재 들여오기 체크리스트

자, 이제 여러분의 프로젝트 현장에 자재를 들이고 뺄 때 사용할 필수 명령어들을 정리해 드립니다. 직접 VS Code 터미널을 열고 따라 해보시길 권장합니다.


  1. 현장 개설 (초기화): npm init -y (package.json 자동 생성)
  2. 필수 자재 입고 (설치): npm install react
  3. 공구 대여 (개발용 설치): npm install -D prettier
  4. 불량 자재 반품 (삭제): npm uninstall 패키지명
  5. 현장 복원 (전체 재설치): npm install (다른 개발자의 코드를 다운받았을 때, package.json을 읽고 node_modules를 통째로 다시 만들어주는 마법의 명령어입니다.)

마무리하며

우리는 지금까지 자바스크립트의 기초와 심화(5~6편)를 다지고, VS Code와 Git으로 현장 세팅(7편)을 마친 뒤, 오늘 npm이라는 막강한 건축 자재 조달 시스템까지 완벽하게 손에 쥐었습니다.


이제 맨손으로 벽돌을 굽는 수고를 할 필요가 없습니다. 전 세계 최고 수준의 개발자들이 만들어둔 수백만 개의 부품을 자유자재로 가져다 쓸 수 있는 권한을 얻으셨으니까요. 다음 9편에서는 이렇게 조달한 자재들을 활용하여, 현대 웹 개발의 절대적인 표준이자 모듈형 건축의 꽃인 리액트(React)의 기초를 본격적으로 파헤쳐 보겠습니다. 진정한 프론트엔드 개발자로 거듭나는 첫걸음, 기대하셔도 좋습니다!