반응형
npx는 npm@5.2.0에서부터 사용할 수 있는 npm을 좀 더 편하게 사용할 수 있는 npm에서 제공하는 도구입니다.
Node.js 도구를 전역에 설치하지 않고도 실행할 수 있게 해줍니다.

 


npm을 패키지로 설치할 때 2가지 케이스가 있습니다.

  1.  전역으로 패키지를 설치하여 의존성 라이브러리들을 전체적으로 관리
  2.  특정 프로젝트에만 의존성 라이브러리 설치

이렇게 설치할때 대표적으로 3가지 문제가 생기기 시작했습니다.

 

1. 모듈이 업데이트되었는지 안되었는지 확인하기

모든 프로젝트마다 모듈을 재설치하는 것이 아닌, 한번 설치한 모듈을 그대로 사용하기 때문에 프로그래머가 의식해서 글로벌 모듈을 최신으로 재설치하지 않으면 확인이 힘들다.

 

2. 업데이트 시 다른 프로젝트에 영향이 간다.

프로젝트를 여러 개를 운영하는데 같은 모듈의 각각 다른 버전이 필요한 상황이 있을 수 있습니다.

글로벌 모듈은 1개이기 때문에 변경할 수가 없습니다.

 

 = 대표적으로 노드버전으로 인한 이슈가 저는 제일 많이 생겼는데.  각 프로젝트마다 노드버전이 달랐고 그래서 노드버전을 바꿔줘야 하는 일이 제일 많았습니다.

 

3. cra 같은 보일러플레이트에 치명적인 이슈

리엑트 생성 cra의 경우  변경사항이 잦습니다. 업데이트 때마다 새로운 기능과 다양한 버그가 고쳐지기 때문에 최신 버전으로 유지해 주는 것이 좋은데 이렇게 되면 생성 시 기마다 버전이 다르게 되어서 생기는 문제가 생깁니다.


 npx은 언제 사용할까?

 

  • npm run-script를 사용하지 않고 로컬에 설치된 패키지를 사용할 경우
  • 일회성 명령으로 패키지를 실행할 경우
  • 특정 노드 버전의 스크립트를 실행할경우
  • gist-based scripts를 실행할 경우

 

npm run-script 없이 로컬로 설치된 도구사용

{
	"devDependencies": {
    	"test": "^1.1.0"
    }
}

 

로컬 devDependencies 설치된 test 패키지를 바로 실행 가능합니다.

app npx test 메세지

 

 

 

일회성 명령 실행

npx는 우선적으로 로컬에 패키지가 설치되어 있는지 파악후 패키지가 존재하지않으면 npm레지스트리에서 해당 이름의 패키지가 자동으로 설치되고 호출됩니다.

npx으로 실행된 패키지는 실행하기 위해 설치되었다가 실행 후 삭제됩니다.

 

 

다른 Node.js 버전으로 실행

ㅁnpm 레지스트리에 node라는 패키지가 존재합니다. (node-bin 패키지는 deprecated 되었습니다.)

node패키지는 nvm, nave 또는 n과 같은 노드 버전 관리 도구를 사용하지 않고도 서로 다른 노드버전을 사용하여 노드를 사용할수 있습니다.

 

 

 

gist-based scripts를 공유할 경우

github의 gist에 스크립트를 올리고 실행할 때 유용하게  사용할수 있습니다. gist에 스크립트를 올리고, npx {gist url}만 실행하면 스크립트를 실행할수 있습니다.

 

반응형

'etc' 카테고리의 다른 글

모바일 기기별 사이즈  (0) 2024.07.26
Iframe 높이 조절  (0) 2023.11.23
로그인 인증의 방식  (1) 2023.11.23
퍼블리셔 면접 관련 질문 정리  (3) 2023.11.20
on-demand Atomic CSS (unocss)  (0) 2023.11.16

+ Recent posts