일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- vuetify
- package-lock.json
- javscript
- A-Frame
- bootstrap
- version mismatch
- Three.js
- EM6
- 상태관리
- promise
- Node
- PHP
- PDO
- vue-template-compiler
- JS
- CI/CD
- 3d
- web
- vue
- VR
- aframe
- WebVR
- Component
- AR
- vuex
- JavaScript
- auth0
- array
- WebXR
- npx
- Today
- Total
대가는 결과를 만든다
[개념정리] npx란? 본문
INTRO
프론트엔드 개발 및 예제들 테스트를 하는 중 CRA(create-react-app)이나 vue-cli를 사용하면서 종종 npx를 사용하는 예시들을 보게됬다. npm 이후 yarn, 또다른 npx라는 패키지 매니저가 나온 것인가 싶었으나 댓츠 노노! npx에 대해 개념정리 해보겠다.
npx란?
npx는 자바스크립트 패키지 관리 모듈인 npm의 5.2.0버전부터 추가된 툴이다. (새로운 패키지 매니저 개념이 아니다! )
패키지를 설치하지 않고, npm 패키지를 1회성으로 즉석 실행해볼 수 있는 도구이다.
배경
npm으로 모듈을 설치 시 두가지 방안이 있다.
1) 전역으로 설치하여 의존성 라이브러리들이 PC에 남게 하는 것
2) 현재 프로젝트에만 개발 의존성 모듈로 설치하는 것
최근 npm으로 설치하는 모듈들은 자바스크립트 개발시 사용하는 단순한 모듈 라이브러리의 개념을 넘어 Tool 그 자체의 성격도 지니게 된 듯하다. INTRO에서 언급한 CRA나 vue-cli 처럼 프로젝트 생성도구 처럼 말이다.
그리고 사실 실제 개발이나 테스트를 하다보면 global 설치보다는 devDependency에 설치하는 경향이 더 많은 것 같다. (개인적인 생각일 수 있음..)
그리고 하루가 멀다하고 개선되고, 업데이트되는 이런 툴이나 의존성 라이브러리들을 한번 전역으로 설치해 PC에 남기고, 변경사항이 있으면 다시 삭제 후 설치하는게 번거로울 수 있다.
그리고 테스트가 빈번하게 일어나는 상황에서 일일이 설치, 실행, 필요없을 시 제거를 반복하기보단 1회성으로 실행하기 위한 도구가 있으면 좋겠다의 취지에서 나온 것이 'npx' 이다!
대표적 기능
1) 1회성 패키지 명령 실행
npx create-react-app my-app
npx <command>를 실행하면 $PATH에 없는 경우라도 npm 레지스트리에서 해당 이름의 패키지를 자동으로 설치하고 호출한다. 설치가 완료되어도 설치 패키지가 전역에 있지 않고, 사용 후 제거되므로 장기적으로 오염에 대해 걱정할 필요가 없다.
npx 로 CRA를 설치하면, CRA패키지를 잠깐 다운받고 CRA 프로젝트를 생성 후, 다시 패키지를 삭제한다.
이러한 방식으로 PC에 CRA의 무거운 패키지들을 남기지 않게 되고, 항상 최신 버전의 CRA를 사용할 수 있다.
2) 다른 버전의 node.js로 명령 실행
node의 여러버전을 사용하는 경우 대부분 nvm같은 버전관리 툴을 사용했다.
> npx node@6 -v
v6.11.1
> npx -p node@7 -- node -v
v7.10.1
'개발 > Node.js' 카테고리의 다른 글
[이슈]npm install error (0) | 2020.02.19 |
---|---|
node 서버 windows에서 서비스로 실행 (0) | 2018.12.17 |