npx와 npm의 차이는 뭔가요?

도깨비젤리

·

2022. 10. 17. 21:14

우리는 한다 번역을

 

 

원문


https://stackoverflow.com/questions/50605219/difference-between-npx-and-npm?answertab=scoredesc#tab-top 

 

Difference between npx and npm?

I have just started learning React, and Facebook helps in simplifying the initial setup by providing the following ready-made project. If I have to install the skeleton project I have to type npx

stackoverflow.com

 

 

 

 

 

 

번역


 

 

 

⛳ 질문

작성일  2018-05-30
추천수 903

저는 이제 막 리액트를 막 공부하는 중이고, 페이스북이 이런 미리 만들어진 프로젝트를 통하여 초기 설정을 간소화 시켜주는 것을 알게 되었습니다.

만약 제가 새로운 스켈레톤 프로젝트를 설치해야한다고 하면, npx create-react-app my-app을 커멘드 라인에 치기만 하면 되는거죠.

여기서 궁금한건데, 왜 페이스북은 깃허브에서 npm create-react-app my-app이 아닌 npx create-react-app my-app을 사용하게 하는건가요?

 

🔥🔥 최다 추천 커맨트 🔥🔥

추천수 : 65

create-react-app은 제너레이터입니다. npx는 인터넷을 통하여 패키지를 다운 받은 후, 일시적으로 실행 시킬 수 있도록 하는 것입니다. 네가 가지고 싶은( 그리고 원하는 ) 결과물은 모조리 다 로컬 환경에 저장됩니다.

 

 

 

👩‍💻 답변

 

 

 

🎈🎈채택답변🎈🎈

추천수: 1069

 

npx : npm package 실행기

 

npm - 패키지들을 관리하지만, 이것으로 패키지들을 실행시키긴 쉽지 않습니다
npx - node package들의 실행을 위한 도구

 

 

npx는 npm 5.2+ 버전에 딸려 옵니다

 

npm 그 자체로는 아무런 패키지도 그냥 실행시킬 수 없습니다. 사실, 어떤 패키지도 실행시킬수가 없습니다.
만약에 npm을 통해 어떤 패키지를 실행시키고 싶다면, package.json 파일을 통하여 실행시키고자 하는 패키지를 특정지어주어야합니다.

실행 파일이 NPM 패키지를 통해 설치되면 NPM은 다음과 같이 링크합니다.

 

  1.  local 설정은 ./node_modules/.bin/ 경로에 링크를 생성합니다.
  2. global 설정은 전역 /bin 경로에 링크를 생성합니다 (ex. /usr/local/bin [리눅스] %AppData%/npm [윈도우즈])

 

당신이 읽어봐야할 문서

 


 

NPM

프로젝트에 로컬로 패키지를 설치할 수 있습니다.

 

npm install some-package

 

 

그리고 이제 당신이 커멘드 라인을 통해 nodejs로 그 패키지를 실행시키려 한다고 합시다

some-package




위 커맨드는 실패할 것입니다. 전역으로 설치된 패키지만이 이름을 타이핑 하는 것으로 실행될 것입니다

위 커멘드를 동작하게 하려면, 로컬 경로를 명시해줘야합니다.

 

./node_modules/.bin/some-package

 

또 기술적으로 package.json의 script 섹션에 해당 패키지를 추가하여 로컬에 설치된 패키지를 실행할 수도 있습니다.

 

{
  "name": "whatever",
  "version": "1.0.0",
  "scripts": {
    "some-package": "some-package"
  }
}

 

 

이후 npm run-script (혹은 npm run) 을 통하여 실행시킬 수 있습니다.

 

 

npm run some-package

 

 


NPX :

 

npx는 $PATH에 혹은 로컬 프로젝트의 binaries에 <command>가 있는지 여부를 확인하고 이를 실행합니다. 그래서, 위 예제에서 당신이 만약 로컬에 설치된 some-package를 실행하고 싶다면 아래와 같이 타이핑만 하면 됩니다.

 

npx some-package

 

 

npx를 사용하는 또 다른 큰 이점은 사전에 설치되지 않은 패키지를 실행할 수 있다는 것입니다

npx create-react-app my-app



위 예제로 인하여 react app 보일러플레이트를 커멘드가 실행된 곳에서 만들어주고, 항상 제너레이터 혹은 빌드툴의 최신 버전을 어떠한 업그레이트 없이 당신이 필요할 때마다 사용 할 수 있게 되는 겁니다.

 



용례


npx command는 package.json의 script 섹션에서 자주 사용되지 않거나 모종의 사유로 인하여 디펜던시를 정의하고 싶지 않은 패키지를 사용할 때 유용하게 사용되기도 합니다.

 

"scripts": {
    "start": "npx gulp@3.9.1",
    "serve": "npx http-server"
}

 

 

npm run serve로 호출하세요

 


관련된 질문들 : 

  1. node_modules에 로컬로 설치된 패키지를 어떻게 사용하나요?
  2. npm : 어떻게 ./node_modules/.bin 폴더에 있는걸 실행시키죠?
  3. npm script를 이용해서 js file을 어떻게 실행시키나요?