Windows의 전역 npm 설치 위치?


86

100 % 확실하지는 않지만 집과 사무실 PC 모두에 Windows 설치 프로그램에서 노드 v5를 설치했다고 생각합니다.

내 집 PC에서 전역 설치는 % APPDATA %에서 발생합니다.

(dev) go|c:\srv> which lessc
c:\users\bjorn\appdata\roaming\npm\lessc
c:\users\bjorn\appdata\roaming\npm\lessc.cmd

내 사무실 PC에서는 프로그램 파일 아래에 있습니다.

(dev) go|w:\srv> which lessc
c:\program files\nodejs\lessc
c:\program files\nodejs\lessc.cmd

PyCharm의 파일 감시자에게 이러한 여러 글로벌 도구의 전체 경로를 제공해야하며, 공유 한 프로젝트 파일 이후 사용자 폴더 아래에 글로벌 리소스가없는 것이 합리적입니다.

글로벌 설치가 다른 폴더에있는 이유는 무엇이며 모든 팀 구성원에게 공통적 인 위치로 강제로 배치 할 수있는 방법은 무엇입니까?


3 년 후 비슷한 미스터리가 생겼습니다. 대답은 노드가 실제로 % appdata % \ nvm \ v8.10.0을 가리키는 c : \ program files \ nodejs에 접합을 생성 한 것으로 밝혀졌습니다. 그래서 그것은 당신이 본 것에 맞는 환상을주었습니다.
John Hatton

1
는 C : \ 프로그램 파일 \ nodejs은의 유물로 밝혀졌다 심볼릭 링크 NVM
존 헤이 튼을

답변:


66

에 따르면 : https://docs.npmjs.com/files/folders

  • 로컬 설치 (기본값) : 현재 패키지 루트의 ./node_modules에 항목을 넣습니다.
  • 전역 설치 (-g 사용) : / usr / local 또는 노드가 설치된 위치에 항목을 넣습니다.
  • 필요한 경우 로컬로 설치하십시오 ().
  • 명령 줄에서 실행하려면 전역으로 설치하십시오. -> 둘 다 필요하면 두 위치에 설치하거나 npm 링크를 사용하십시오.

접두사 구성

접두사 config는 노드가 설치된 위치로 기본 설정됩니다. 대부분의 시스템에서 이것은 /usr/local. Windows에서 이것은 node.exe 바이너리의 정확한 위치입니다 .

문서는 약간 구식 일 수 있지만 글로벌 설치가 다른 디렉토리에있는 이유를 설명합니다.

(dev) go|c:\srv> npm config ls -l | grep prefix
; prefix = "C:\\Program Files\\nodejs" (overridden)
prefix = "C:\\Users\\bjorn\\AppData\\Roaming\\npm"

다른 답변에 따르면 재정의가 이제 Windows의 기본 위치이며이 재정의가 구현되기 전에 Office 버전을 설치했을 수 있습니다.

이것은 또한 모든 팀 구성원이 자신의 PC에 상대적인 동일한 절대 경로에 전역을 저장하도록하는 솔루션을 제안합니다 (예 : 관리자 권한으로 실행).

mkdir %PROGRAMDATA%\npm
setx PATH "%PROGRAMDATA%\npm;%PATH%" /M
npm config set prefix %PROGRAMDATA%\npm

새 cmd.exe 창을 열고 모든 글로벌 패키지를 다시 설치하십시오.

설명 (라인 번호 별) :

  1. 합리적인 위치에 폴더를 생성하여 전역을 보관하십시오 (Microsoft는 ProgramFiles에 쓰지 말아야한다고 단호하므로 % PROGRAMDATA %는 다음 논리적 위치로 보입니다.
  2. 디렉토리는 경로에 있어야하므로 setx .. /M 하여 시스템 경로를 설정하십시오 (HKEY_LOCAL_MACHINE 아래). 이것이 관리자 권한으로 쉘에서 실행해야하는 것입니다.
  3. 에게 npm이 새로운 경로를 사용 할 수 있습니다. (참고 :이 셸의 % PATH %에는 폴더가 표시되지 않으므로 새 창을 열어야합니다.)

경고 : 어떤 이유로 명령 setx PATH "%PROGRAMDATA%\npm;%PATH%" /M은 새 값을 앞에 추가하지 않지만 모든 항목을 대체합니다 (PowerShell에서).
Rubens Mariuzzo

47

패키지를 전역으로 설치하는 경우 일반적인 npm 경로입니다.

Windows XP -             %USERPROFILE%\Application Data\npm\node_modules
Newer Windows Versions - %AppData%\npm\node_modules
or -                     %AppData%\roaming\npm\node_modules

1
흠 .. %APPDATA%은 사용자 폴더 아래에 있고 PyCharm은 환경 변수를 허용하지 않는 것 같습니다.
thebjorn 2016

7
이것은 잘못된 답변입니다 ~ / AppData / Roaming / npm / node_modules $ npm / c / Users / Phil / AppData / Roaming / npm / npm : line 12 : node : command not found
Philip Rego

Powershell을 통해 전역 적으로 패키지를 설치 한 후 일반 파일, cmd_auto_file파일 및 Windows PowerShell Script파일이 생성되었습니다."$env:APPDATA\npm"
Olov

18

Windows 버튼을 누르고 % APPDATA %를 입력하고 Enter를 입력하십시오.

위는 \ npm \ node_modules 폴더를 찾을 수있는 위치입니다. 이것은 글로벌 모듈이 시스템에있는 곳입니다.


1
내 질문을 보면 귀하의 주장이 거짓임을 알 수 있습니다. 전역 모듈 %PROGRAMFILES%\nodejs은 내 첫 번째 질문 인 아래 에 설치할 수도 있습니다 (집 / 사무실 PC의 다른 폴더에있는 이유는 무엇입니까?). 내 질문의 맥락은 (설명 된대로 ..) 다른 팀 구성원이 우리 프로젝트에 대해 올바르게 설정하는 이점을 누릴 수 있도록 PyCharm IDE에 전역 적으로 설치된 이러한 npm 도구의 경로를 제공해야한다는 것입니다. (a) PyCharm은 실행 파일을 지정할 때 env vars를 허용하지 않기 때문에 (b) %APPDATA%=c:\Users\bjorn\..여기서 APPDATA를 사용할 수 없습니다.
thebjorn 17:09에 apr

-1

npm이 전역 모듈 (이 스레드의 제목)을 설치하는 위치를 찾으려는 경우 실행시 출력을 확인하십시오. npm install -g sample_module

$ npm install -g sample_module C : \ Users \ user \ AppData \ Roaming \ npm \ sample_module- > C : \ Users \ user \ AppData \ Roaming \ npm \ node_modules \ sample_module \ bin \ sample_module.js + sample_module@5.1.0 2.821s에서 1 개의 패키지 업데이트


질문은 제목뿐 아니라 전체 질문입니다. 나는 이것이 내 질문에 대한 대답이라고 생각하지 않습니다.
thebjorn

@thebjorn 나는 귀하의 질문 제목이 충분히 구체적이라고 생각하지 않습니다. 따라서 저와 같은 사람들은 npm 설치 위치를 찾고있는 사람을 찾을 것입니다. 변경하는 방법이나 다른 폴더가있는 이유 등을 찾지는 않습니다.
java- addict301

허용 대답은 귀하의 질문에 대한 답을 포함 npm config ls -l | grep prefix하고, 그렇지 않은 경우에도 올바른 절차는 ... 새로운 더 좁게 초점을 맞춘 질문을 질문하는 것
thebjorn

왜냐하면 단순히 무언가를 찾아 보는 대신 무언가를 설치해야하기 때문입니다.
thebjorn apr

설치하는 동안 글로벌 모듈이 어디에 배치되는지 파악하려는 경우입니다 (예 : 제 경우와 현재 제목을 기반으로이 질문을 찾을 다른 사용자).
자바 addict301
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.