실수로 명령어를 전부 적지 않고 "npm install -g"만 입력한 상태로 엔터를 눌렀으나, 하나의 패키지가 설치되었습니다. 이것의 정체가 무엇인지 확인하고 넘어가고자 합니다.
결과만 짧게 적자면 현재 작업 디렉토리(CWD)에 package.json이 있는 경우에 해당 패키지를 전역에 설치합니다.
npm help install
npm help <command>를 터미널에 입력하면 터미널로 각 명령어에 대한 문서를 확인할 수 있습니다. 해당 문서에서 손쉽게 원하는 답을 찾을 수 있었습니다.
다음은 npm help install 문서의 내용 일부 발췌
• npm install (in a package directory, no arguments):
Install the dependencies to the local node_modules folder.
In global mode (ie, with -g or --global appended to the command), it installs the current package context (ie,
the current working directory) as a global package.
• npm install (패키지 디렉토리 내에서 인자 없이 실행한 경우):
dependencies(의존성)을 로컬의 node_modules 폴더에 설치합니다.
전역 모드(명령어에 -g 또는 --global을 추가)는 현재 패키지 컨텍스트(현재 작업 디렉토리)를 전역 패키지로 설치합니다.
명령어 입력 시 정확히 현재 디렉토리에 위치한 package.json에 접근하여 패키지 정보를 읽고 이것을 전역에 설치합니다. 그래서 이 명령어는 package.json이 포함되지 않은 디렉토리에서 실행하면 파일을 읽는 데에 실패하게 됩니다. (Error: ENOENT: no such file or directory)
이는 정확히 현재 작업 디렉토리의 package.json에만 접근한다는 점에서 npm install과는 차이를 보입니다. npm install 명령어는 실행 시 현재 작업 디렉토리에서 가장 가까운 부모 디렉토리에 위치한 package.json으로부터 모든 의존성을 내려받습니다.
정리
로컬에 위치한 패키지를 전역에 설치하는 명령어로써, npm, github 등을 이용해 패키지를 배포하지 않고 오직 로컬에서만 사용하고자 하는 특수한 경우에 활용할 수 있겠습니다.
덧) 챗봇별 응답
물음
1. "npm install -g" 명령어를 실행한 결과 패키지가 1개 설치되었는데, 이것이 무엇인가?
2. 인자 없이 "npm install -g"를 실행하면 어떻게 되는가?
응답
chatGPT 4o mini
- "npm install -g" 명령어는 패키지를 전역에 설치한다. 1건의 패키지가 설치되었다는 것은 1개의 패키지가 성공적으로 전역 환경에 설치되었음을 나타낸다. 이를 확인하기 위해서는 "npm list -g --depth=0" 명령어를 사용하여 전역에 설치된 패키지 목록을 확인할 수 있다.
- 설치할 패키지를 지정하지 않았으므로 아무 일도 일어나지 않는다.
gemini 1.5 flash
- "npm install -g" 명령어는 패키지를 전역에 설치한다. 1건의 패키지가 설치되었다는 것은 명령어 실행 시 지정한 패키지 1개가 성공적으로 전역 환경에 설치되었음을 나타낸다.
- 특정 패키지를 설치하기 위한 명령어이므로 인자 없이 실행하면 일반적으로 오류가 발생한다.
perplexity
- "npm install -g" 명령어는 패키지를 전역에 설치한다. 특정 패키지명을 명시하면 해당 패키지를 전역에 설치한다.
- 기존에 설치된 모든 전역 패키지가 업데이트되고 npm 패키지도 최신 버전으로 업데이트되며 최종적으로는 업데이트된 패키지 정보를 보여줄 것이라고 한다. (거짓 정보 주의)
공통적으로 인자가 없이 "npm install -g" 명령이 사용된 경우에 대해서는 올바른 답을 하지 못하였습니다.