지정된 디렉토리에 npm을 설치하는 방법은 무엇입니까?


답변:


325

--prefix옵션을 사용할 수 있습니다 :

mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>

그러면 패키지가에 설치됩니다 ./install/here/node_modules. 는 mkdirNPM 달리 이미 존재하는 선택할 수 있기 때문에 필요한 node_modules계층 구조의 최대 디렉토리 높은. ( 폴더에 대한 npm 설명서를 참조하십시오 .)


65
--prefix 옵션을 사용하는 경우이 대체 디렉토리에 package.json 파일이 있어야합니다. 현재 디렉토리에 package.json을 가지고 대체 디렉토리에 설치하는 방법이 있습니까?

2
@fractal 그것에 대한 내 대답을 참조하십시오
yunzen

10
@coundy npm install패키지 이름없이 경로를 지정하는 방법이 있습니까? 나는 이것을 직접 시도했지만 npm은 package.json에서 찾습니다 {prefix}. 내가 목표로하는 것은 packages.json프로젝트 루트에 in을 넣고 동시에 모든 패키지를 설치할 수 있도록하는 것 입니다 {project root}/{project webroot}.
automatix

재귀 문제가 발생했습니다. 한 번 실행하도록 지시하는 방법이 있습니까? 디렉토리를 변경 한 다음을 호출하여 일시적으로 해결 npm install했지만 --prefix재귀를 일으키지 않으면 더 좋은 솔루션처럼 보입니다.
adi518

47

에서 문서 가 언급 한 것 : 접두사 옵션을 사용하여 글로벌 옵션과 함께 :

접두사 노드가 설치된 위치에 기본값을 config (설정). 대부분의 시스템에서 이것은 / usr / local 입니다. Windows에서 이것은 node.exe 바이너리의 정확한 위치입니다. Unix 시스템에서는 노드가 일반적으로 {prefix} /node.exe가 아닌 {prefix} / bin / node에 설치되므로 레벨이 한 단계 높아집니다 .

글로벌 플래그가 설정되어, NPM이 접두사로 물건을 설치합니다. 설정되지 않은 경우 현재 패키지의 루트 또는 패키지에없는 경우 현재 작업 디렉토리를 사용합니다.

(그들에 의한 헛소리)

따라서 루트 디렉토리에서 다음을 설치할 수 있습니다.

npm install --prefix <path/to/prefix_folder> -g

node_modules폴더에 폴더를 설치 합니다

<path/to/prefix_folder>/lib/node_modules

2
당신은 할 수 require할 수 있습니다, 전 세계적으로 설치된 패키지?
Pavlo

3
@Pavlo 도움이 되었습니까? stackoverflow.com/questions/15636367/…
yunzen

1
이것을 답변에 추가해야합니다.
Pavlo

6
@Pavlo 나는 그렇게 생각하지 않습니다. OP에 대한 답변이 아닙니다.
yunzen

@Pavlo 패키지가 전체적으로 설치되는 경우 항상 같은 방식으로 필요합니다. 예, 전체적으로 설치된 패키지가 필요할 수 있습니다.
Rob Evans

43

npm 버전 3.8.6부터 사용할 수 있습니다

npm install --prefix ./install/here <package>

지정된 디렉토리에 설치합니다. 상위 계층 구조에 디렉토리가 이미 node_modules있는 경우에도 NPM은 자동으로 폴더를 만듭니다 node_modules. 또한있을 수 있습니다 package.json현재 디렉토리에 다음 사용하여 지정된 디렉토리에 설치 --prefix옵션 :

npm install --prefix ./install/here

npm 6.0.0부터 사용할 수 있습니다

npm install --prefix ./install/here ./

현재 디렉토리의 package.json을 "./install/here"디렉토리에 설치하십시오. Mac에서 node_modules 디렉토리 내에 상위 폴더에 대한 심볼릭 링크를 생성한다는 것을 알았습니다. 그러나 여전히 작동합니다.

참고 : NPM은 --prefix옵션을 통해 지정한 경로를 따릅니다 . 옵션 없이 사용하는 경우에만 폴더의 npm 설명서에 따라 해결됩니다 .npm install--prefix


1
이 작동하지 않는 것 같습니다, 난 항상 얻을Can't install <current directory>: Missing package name
Tibor Blenessy

1
@TiborBlenessy 두 번째 설치 설명에 대해 이야기한다고 가정합니다. 현재 디렉토리에 유효한 package.json 파일이 있는지 확인하십시오. 그래도 작동하지 않으면 npm 버전을 알려주십시오. 이 단계는 지정된 npm 버전으로 작업하는 데 사용됩니다. 그리고 그들이 더 이상 그렇지 않다면, 나는 깊게 뛰어 들어 근본 원인을 찾고 싶어하고 대안을 생각해 낼 수 있습니다.
Rohit Sharma

1
@RohitSharma npm 6.0.0을 사용하면이 방법은 package.json파일을 예상 한대로 작동하지 않습니다 ../install/here
Christian Ivicevic

@ChristianIvicevic npm install --prefix ./install/here ./를 사용하여 현재 디렉토리의 "./install/here"디렉토리에 package.json을 설치할 수 있습니다. Mac에서 node_modules 디렉토리 내에 상위 폴더에 대한 심볼릭 링크를 생성한다는 것을 알았습니다. 그러나 여전히 npm 6.0.0에서 작동합니다.
Rohit Sharma

1
@Tanoro 세 번째 명령은 답변에서 언급 한 것처럼 심볼릭 링크 생성과 함께 npm 6.0.0에서 작동합니다. 나는 npm v3.5.2로 처음 두 명령을 시도하지 않았으므로 시도한 특정 npm 버전을 언급했습니다. 다른 버전의 작업 명령으로도 답변을 업데이트하십시오.
Rohit Sharma

0

powershell 빌드를 사용하고 있으며 현재 디렉토리를 변경하지 않고 npm을 실행할 수 없습니다.

start 명령을 사용하고 작업 디렉토리를 지정했습니다.

start "npm" -ArgumentList "install --warn" -wo $buildFolder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.