[번역] 그래, npx! npm말고 — 차이점 설명

Kim Kyeseung·2020년 3월 15일
14

번역

목록 보기
1/4
post-thumbnail

최근에 리액트를 배우기 시작했을 때, 나는 많은 사람들이 (나를 포함해서) 잘 알려진 npm대신 npx를 보고 헷갈려하는 것을 보았습니다.

우리중에 몇몇은 이상하다고 느꼈지만 별로 깊게 생각하지 않았고, 나머지는 그것은 오타라고 생각하고 npx대신 npm으로 "고쳐서" 애를 먹었습니다.

이러한 일이 몇 번 일어나고 나서 이 문제를 설명할 필요가 있다고 느꼈습니다. 그것이 바로 나와 같은 오해를 가진 이들을 위해 이 글을 쓴 이유입니다.

오타가 아니고, npx! npm말고.😃

NPM

우리가 매우 잘 알고 있듯이, npmNode.js의존성패키지 관리를 위한 패키지 매니저입니다.

우리의 프로젝트에 누군가 패키지 의존성을 설치할 때 짠! 하고npm install을 실행함으로써 package.json파일에 의존성들(packages)을 지정할 수 있다는 걸 말합니다.

그리고 버전관리를 지원합니다. 우리 프로젝트가 어떤 버전의 의존성을 사용할지 지정할 수 있는데요, 예를 들어서 대부분의 경우에 패키지의 업데이트로 인하여 프로젝트가 오작동하는 경우를 방지할 수 있고 그 외에도 우리가 원하는 버전의 패키지 의존성을 설치할 수 있습니다.

NPX

한편, npxNode 패키지를 실행시키는 하나의 도구이고 npm5.2 버전부터 함께 딸려있습니다.

npx는 다음과 같은 역할을 합니다.

1. 기본적으로 실행되어야할 패키지가 경로에 있는지 먼저 확인합니다.(예: 우리의 프로젝트);

2. 경로에 제대로 있다면, 그대로 실행합니다;

3. 그렇지 않다면 패키지는 설치되어 있지 않다는 걸 의미하고, npx가 최신 버전의 패키지를 설치를 한 후에 실행합니다;

위에 설명한 행동들은 npx의 기본 설정 중 하나이고 실행을 방지할 수 있는 명령어도 갖고 있습니다.
예를 들면, 만약 우리가 npx 무슨-패키지 --no-install을 실행하면 이것은 npx에게 무슨-패키지가 기존에 설치되지 않았더라도 설치하지 않고 오직 실행만 시키도록 말하는 것이 됩니다.

여기에서 더 많은 npx 명령어들이 있습니다.

예시

여기 우리가 실행하고자 하는 my-package라는 패키지가 있다고 해봅시다.

아마 npx가 없다면 우리는 패키지를 실행하기 위해 로컬 경로에서 다음과 같이 실행해야 하겠죠.

./node_modules/.bin/my-package

아니면 package.json파일의 scripts 부분에 각각의 스크립트로 정의할 수도 있겠네요, 이렇게요.

{
  "name": "머시기",
  "version": "1.0.0",
  "scripts": {
    "my-package": "./node_modules/.bin/my-package"
  }
}

그리고 npm run my-package로 실행하느 거죠.

이제, 우리는 npx로 더 쉽게 할 수 있습니다. npx my-package명령만으로요.

결론

그래서, 보강하자면 npm !== npx라는겁니다. 그리고 저는 이 짧은 글이 우리의 오해를 해결하는데 도움이 되었으면 합니다.

만약 물어보실게 있다면, 편하게 마음껏 댓글 달아주세요!

코딩 열심히 하셔서 오지고 지리는거 만드시고 항상 행복하세요! 😊


원문: Yes, it’s npx, not npm — the difference explained

첫 번역입니다. 제가 실수했거나 어색한 점 언제든 지적 환영하고 또는 더 나은 번역을 할 수 있도록 한마디씩 해주시면 고맙겠습니다.

profile
웹 프론트엔드 개발자입니다.

4개의 댓글

comment-user-thumbnail
2021년 2월 3일

좋은 글 감사합니다~

답글 달기
comment-user-thumbnail
2021년 6월 24일

감사합니다!!!!

1개의 답글
comment-user-thumbnail
2021년 11월 18일

이해가 잘 되는 설명이였습니다♡

답글 달기