npm을 사용하는 도중 npx라는 흥미로운 명령이 있어서 한번 살펴봤다.
npm(node package manager)
node.js 를 통한 프로젝트를 진행할 때 모든 패키지를 관리하기 위해 사용한다.
npm 에서 특정 라이브러리, 모듈을 사용하고 싶다면 이를 설치 후 실행하는 방식으로 진행이 된다.
하지만 계속해서 쓰는 것이 아니라 실험적으로 써보거나
이후에 사용하지 않거나 하는 패키지가 존재할 수도 있다.
그리고 이를 반복적으로 하려면 package.json과 package-lock.json이
수많은 패키지로 인해 비대해지고 프로젝트의 사이즈도 커질 것이다.
따라서 한 번만 쓰고 말 패키지에 대해서
해당하는 패키지를 설치하지 않고 실행만 하는 명령. 이것이 npx이다.
npx(node package execute)
- 기본적으로 package.json이나 package-lock.json에 영향을 주지는 않음.
- dependency, devDependency 에 영향을 주지 않는다.
- 일회성으로 설치하고 사용하고 싶을 때 사용
- 다만 사용하고자 하는 패키지에 대한 의존적인 패키지가 존재한다면,
(npx로 임시 패키지를 사용하기 위해 미리 설치되어야 하는 패키지가 존재한다면)
- 이 추가 패키지를 설치하고, 이에 대한 의존성 트리의 변경은 불가피하다.
- 예를 들어 설명하자면
- module 1을 npx를 통해 사용하고 싶은데, module 1이 module 2,3,4에 의존적
- 그런데 현재 module 2,3만 설치되어 있고 module 4의 설치가 필요
- 그렇다면 module 4를 설치하게 되어서 전체 프로젝트의 의존성트리에 변경이 있다.
- ✅ package.json, package-lock.json의 변경으로 프로젝트 전체 패키지 업데이트 필요.
shadcn UI에서 npx를 통한 ui 컴포넌트 설치의 방식
사실 이 글을 쓰게 된 이유이기도 한데, npx에 대해서 흥미를 느낀 부분은
shadcn이 해당 npx의 과정을 약간 응용해 필요한 것만을 설치해준 방식 때문이다.
shadcn 에서 button 컴포넌트를 사용하고 싶다고 가정하자.
https://ui.shadcn.com/docs/components/button
Button
Displays a button or a component that looks like a button.
ui.shadcn.com
Installation에서 Manual에 나온 결과물을 CLI의 npx명령어 한 줄로 처리하고 있다.
CLI의 방식, npx shadcn@latest add button 명령어를 통해 다음의 과정이 실행된다.
1. npx를 통한 임시 실행
- 명령어 npx shadcn@latest add button은 shadcn 패키지의 최신 버전을 로컬 환경에 다운로드하여 실행
- 이때, shadcn@latest는 shadcn 패키지의 최신 버전을 임시로 설치하여,
프로젝트에서 사용하고자 하는 button 컴포넌트를 추가하는 역할
2. shadcn 패키지 실행 및 설정
- npx로 shadcn을 실행하면, shadcn 스크립트가 실행, 프로젝트에 Button 컴포넌트를 설치하는 과정을 진행
- 이 과정에서 shadcn은 컴포넌트 템플릿 파일을 프로젝트에 복사하거나 추가하고,
해당 컴포넌트와 관련된 의존성을 자동으로 설치
3. 컴포넌트 파일 생성:
- shadcn 스크립트는 Button 컴포넌트 파일을 생성하거나 프로젝트 디렉토리 내 특정 경로에 복사.
Button 컴포넌트를 쉽게 사용할 수 있도록 프로젝트에 추가
4. 필요한 의존성 설치:
- shadcn은 기본적으로 Radix UI 컴포넌트를 기반으로 동작하기 때문에,
Button 컴포넌트에 필요한 의존성 패키지@radix-ui/react-button가 필요하다. - shadcn 스크립트는 해당 의존성들을 자동으로 설치한다.
이 과정에서 package.json에 의존성이 추가되며, npm 명령어를 통해 의존성 패키지를 설치 - Button 컴포넌트와 관련된 의존성은 자동으로 node_modules에 설치되고,
해당 패키지의 버전 정보는 package-lock.json 파일에 기록된다.
5. npx의 임시 설치 및 종료:
- npx는 일회성 실행 도구이기 때문에, shadcn이 프로젝트에 필요한 컴포넌트 파일을 생성하고 의존성을 설치한 후, shadcn 패키지는 삭제되거나 캐시로 유지된다.
- 즉, shadcn은 영구적으로 설치되지 않고, 해당 스크립트가 실행된 후 자동으로 종료된다.
하지만 프로젝트에는 필요한 컴포넌트와 의존성이 남아 있게 됩니다.
즉, shadcn은 npx라는 명령을 통해 자신을 설치하지 않고 radix-ui/component 라는 모듈을 추가 후 설치하고,
개발자가 사용할 Button.jsx라는 파일을 ui디렉토리에 생성해준다.
굳이 shadcn이라는 package를 의존성에 추가하지 않고 사용자 입장에서 필요한 모듈과 파일만을 설치해주는 것이 된다.
'정보 > WEB' 카테고리의 다른 글
CSRF, 이를 막기 위한 CORS (2) | 2024.09.10 |
---|---|
Cookie를 보완하는 Storage, Session (0) | 2024.09.10 |
Cookie 개요, 브라우저에서 쿠키의 작동 (1) | 2024.09.03 |
Proxy Server (1) | 2024.08.30 |
HTTP Cache 재검증 기준 헤더와 조건부 요청 (0) | 2024.08.29 |