npm Deep Dive (npm의 동작 원리부터 패키지 개발과 관리까지, npm의 모든 것)

npm Deep Dive (npm의 동작 원리부터 패키지 개발과 관리까지, npm의 모든 것)

$59.44
Description
자바스크립트 생태계의 비밀, npm부터 모노레포까지!
자바스크립트는 단순한 프로그래밍 언어를 넘어 전 세계 개발자들이 활용하는 방대한 생태계를 만들어냈습니다. 하지만 매일 사용하는 npm과 package.json, 다양한 번들 도구와 모듈 시스템의 작동 원리, 그리고 모노레포 환경까지 제대로 이해하기는 쉽지 않습니다. 이 책은 이러한 자바스크립트 생태계의 복잡한 퍼즐을 하나씩 풀어가며 실무에 꼭 필요한 지식을 제공합니다.

《npm Deep Dive》는 단순히 사용법을 나열하는 데 그치지 않고, 각 도구와 개념의 작동 원리와 선택 기준을 깊이 있게 다룹니다. npm의 기본 원리와 유의적 버전 관리, CommonJS와 ESModule의 차이점과 활용법, Webpack, Rollup, Vite 같은 최신 번들 도구의 비교와 실무 적용법, 그리고 모노레포를 활용한 대규모 프로젝트 관리 방법까지, 자바스크립트 생태계의 핵심을 체계적으로 정리했습니다.

초보 개발자라면 복잡한 개념을 단계적으로 이해할 수 있도록, 숙련된 개발자라면 실무에 바로 적용할 수 있는 팁과 전략을 통해 자바스크립트를 한층 더 깊이 이해하고 활용할 수 있도록 도와드립니다. 이 책을 통해 여러분은 자바스크립트 생태계를 자유롭게 탐험하며, 더 나은 개발 환경을 만드는 것뿐만 아니라 평소에 하던 웹 서비스 개발만으로는 이해하기 힘든 지식을 얻을 수 있을 것입니다.
저자

전유정,김용찬

저자:전유정
2018년성균관대학교소프트웨어학과를졸업한후롯데정보통신,카카오커머스등에서프런트엔드개발자로재직했다.현재는경기도성남시소재의한IT회사에서프런트엔드개발자로근무하고있다.

저자:김용찬
삼성SDS,카카오,인터파크트리플을거치며풀스택및프런트엔드개발자로근무했다.현재는경기도성남시소재의IT회사에서프런트엔드개발자로근무하고있다.저서로는《모던리액트DeepDive》,역서로는《리액트인터뷰가이드》가있다.

목차

01장:npm과유의적버전
1.1npm의정의와역사
__1.1.1npm의역사와배경
__1.1.2npm의주요기능
__1.1.3npm과관련된유용한사이트
__1.1.4정리
1.2유의적버전이란?
__1.2.1유의적버전의등장배경과정의
__1.2.2유의적버전의구체적인명세
__1.2.3유의적버전의문법
__1.2.4Node.js와npm에서사용하는유의적버전
__1.2.5정리
1.3유의적버전과npm생태계의명과암
__1.3.1left-pad:수천만패키지에서의존하는유틸패키지가사라지면어떻게될까?
__1.3.2everthing:의존성으로있으면패키지삭제가안된다고?그렇다면모든자바스크립트패키지를의존성으로가져본다면어떨까?
__1.3.3is-promise:잘못된부버전업데이트가만들어낸사태
__1.3.4colors.js와faker.js:섣부른부,수버전업데이트는독이될수도있다
__1.3.5event-stream사건:오픈소스는얼마나안전한가?
__1.3.6유의적버전과npm을사용할때주의할점
__1.3.7정리

02장:package.json과npm파헤치기
2.1package.json톺아보기
__2.1.1package.json
__2.1.2package.json의주요필드
__2.1.3package.json생성하기
__2.1.4npmconfig와.npmrc살펴보기
__2.1.5정리
2.2dependencies란무엇일까?
__2.2.1npm버전과버전에사용되는특수기호
__2.2.2dependencies
__2.2.3devDependencies
__2.2.4peerDependencies
__2.2.5peerDependenciesMeta
__2.2.6정리
2.3npm의주요명령어
__2.3.1npmrun
__2.3.2npminstall과npmci
__2.3.3npmupdate
__2.3.4npmdedupe
__2.3.5npmls
__2.3.6npmexplain
__2.3.7npmaudit
__2.3.8npmpublish
__2.3.9npmdeprecate
__2.3.10npmoutdated
__2.3.11npmview
__2.3.12정리
2.4npminstall을실행하면벌어지는일
__2.4.1의존성트리분석의핵심@npmcli/arborist
__2.4.2패키지설치를위한패키지,pacote
__2.4.3node_modules살펴보기
__2.4.4정리
2.5node_modules는무엇일까?
__2.5.1node_modules의역할
__2.5.2node_modules의구조
__2.5.3심볼릭링크
__2.5.4정리
2.6bin필드와npx
__2.6.1CLI패키지
__2.6.2bin필드
__2.6.3npx
__2.6.4정리

03장:npm의대항마yarn과pnpm
3.1npm의문제점과한계
__3.1.1유령의존성
__3.1.2디스크I/O부하
__3.1.3너무거대한node_modules
__3.1.4변경에취약한락파일
__3.1.5정리
3.2yarn:신속하고안정적인패키지관리를위한패키지관리자
__3.2.1yarn소개와역사
__3.2.2특징
__3.2.3정리
3.3pnpm:디스크공간절약과설치속도의혁신을가져온패키지관리자
__3.3.1pnpm의소개와역사
__3.3.2특징
__3.3.3정리
3.4npm,yarn,pnpm비교
__3.4.1워크스페이스
__3.4.2명령어비교
__3.4.3벤치마크테스트
__3.4.4정리

04장:CommonJS와ESModule
4.1자바스크립트모듈화의역사
__4.1.1자바스크립트모듈화의배경
__4.1.2모듈화이전의자바스크립트
__4.1.3자바스크립트모듈의여러시도들
__4.1.4오늘날의자바스크립트모듈시스템
__4.1.5정리
4.2CommonJS란무엇일까?
__4.2.1CommonJS의탄생배경
__4.2.2CommonJS의명세
__4.2.3Node.js의CommonJS
__4.2.4소스코드를CommonJS로빌드하기
__4.2.5정리
4.3ESModule이란무엇일까?
__4.3.1ESModule의탄생배경과도입
__4.3.2ESModule의특징
__4.3.3Node.js의ESModule
__4.3.4정리
4.4Node.js는어떻게node_modules에서패키지를찾아갈까?
__4.4.1모듈해석알고리즘
__4.4.2모듈이름지정자로모듈을로드하는방법
__4.4.3정리
4.5CommonJS와ESModule,무엇이정답일까?
__4.5.1오픈소스패키지가CommonJS와ESModule을동시에지원하는이유
__4.5.2CommonJS와ESModule을동시에지원하는듀얼패키지개발하기
__4.5.3순수한ESModule패키지개발하기
__4.5.4CommonJS와ESModule,무엇이정답일까?
__4.5.5정리

05장:트랜스파일과폴리필
5.1트랜스파일을도와주는도구,바벨
__5.1.1바벨의필요성
__5.1.2바벨의동작방식
__5.1.3바벨사용해보기
__5.1.4정리
5.2폴리필을도와주는도구core-js
__5.2.1core-js란무엇인가?
__5.2.2바벨과core-js
__5.2.3정리
5.3최선의폴리필과트랜스파일은무엇일까?
__5.3.1지원환경명시하기
__5.3.2정리
5.4바벨과core-js의대안
__5.4.1타입스크립트컴파일러
__5.4.2SWC(SpeedyWebCompiler)
__5.4.3es-shims
__5.4.4polyfill.js
__5.4.5정리

06장:자바스크립트번들도구살펴보기
6.1번들링은무엇이고왜필요할까?
__6.1.1번들링의역사
__6.1.2번들링의역할
__6.1.3정리
6.2웹서비스번들의표준,웹팩
__6.2.1웹팩소개및주요특징
__6.2.2웹팩의기본개념과동작원리
__6.2.3간단한웹팩서비스만들기
__6.2.4정리
6.3패키지번들의선두주자,롤업
__6.3.1롤업의등장배경과소개
__6.3.2롤업의기본개념과특징
__6.3.3정리
6.4번들도구의신흥강자,비트
__6.4.1비트의등장배경과소개
__6.4.2비트의기본개념과특징
__6.4.3설정에필요한주요필드
__6.4.4정리

07장:직접자바스크립트패키지만들기
7.1나만의npm패키지만들기
__7.1.1패키지개발을위한체크리스트
__7.1.2프로젝트환경설정
__7.1.3실제코드와테스트코드작성
__7.1.4번들및트랜스파일하기위한환경구축
__7.1.5간단한테스트코드작성
__7.1.6깃허브액션을활용한CI파이프라인구축
__7.1.7changesets를활용한배포
__7.1.8정리
7.2나만의CLI패키지만들기
__7.2.1제작할CLI패키지구상
__7.2.2프로젝트환경설정
__7.2.3실제코드작성
__7.2.4결과물확인
__7.2.5배포후사용
__7.2.6CLI를만드는데유용한패키지
__7.2.7정리

08장:모노레포로서비스와라이브러리모두관리하기
8.1모노레포와터보레포
__8.1.1모노레포란?
__8.1.2npm워크스페이스
__8.1.3모노레포를구성하는도구,터보레포
__8.1.4정리
8.2나만의모노레포프로젝트만들기
__8.2.1디자인시스템소개
__8.2.2pnpm워크스페이스및터보레포구성하기
__8.2.3shared공유패키지구현하기
__8.2.4@ndive/design-tokens구현
__8.2.5@ndive/design-components구현
__8.2.6@ndive/design-tracker구현
__8.2.7애플리케이션작성
__8.2.8배포살펴보기
__8.2.9정리

09장:패키지개발에도움이되는도구와팁
9.1패키지개발에도움이되는도구
__9.1.1패키지를업로드하는또다른방법JSR
__9.1.2복잡한번들프로세스를한번에수행하는도구,tsup
__9.1.3구성파일의표준cosmiconfig
__9.1.4성능분석을위한도구Tinybench
__9.1.5손쉬운코드마이그레이션을도와주는jscodeshift
__9.1.6정리
9.2패키지개발에도움이되는팁
__9.2.1선택이아닌필수,ESModule
__9.2.2package.json올바르게작성하기
__9.2.3올바른트랜스파일과폴리필적용하기
__9.2.4dependencies는신중하게추가하라
__9.2.5코드에신뢰를주는테스트코드와벤치마크테스트
__9.2.6올바른문서작성법
__9.2.7정리

출판사 서평

★이책에서다루는내용★

npm과node_modules,그리고유의적버전관리의원리
CommonJS와ESModule의역사와차이점
Webpack,Rollup,Vite번들도구의비교와선택방법
트랜스파일러와폴리필:Babel,core-js활용법
모노레포환경에서대규모프로젝트를효율적으로관리하는법
나만의npm패키지와CLI도구를만드는방법

자바스크립트생태계의과거와현재,그리고미래를이해하고싶다면이책이여러분의길잡이가되어줄것입니다.지금까지의고민을해결하고,더욱생산적이고전문적인개발자로성장해보세요!