npm - instala dependências para um pacote em uma pasta diferente?


142

Eu tenho a seguinte estrutura de diretórios:

/some_project
    source.js
    package.json

Eu gostaria de instalar as dependências para some_project. Eu sei que eu poderia cd em some_project e, em seguida, execute o npm install

Mas eu queria saber se é possível sem alterar o diretório? Algo como

npm install some_project/package.json 

Respostas:


344

Você pode usar a npm install <folder>variante com a --prefixopção No seu cenário, a pasta e o prefixo serão os mesmos:

npm --prefix ./some_project install ./some_project

4
Esta é a verdadeira resposta para a pergunta. Obrigado @coudy.
G. Ghez

5
BTW, ele cria vazio etcpasta no destino, é um bug conhecido github.com/npm/npm/pull/7249
Michael Radionov

8
Obrigado por esta resposta. Existe mais clareza sobre se o segundo ./some_projecté necessário?
Aron

12
o segundo ./some_projectnão é necessário
JRJurman

4
Isso não parece funcionar para mim no Windows 10. Ele instala as dependências no diretório atual e apenas coloca um link simbólico na subpasta.
Herohtar 31/08/18

45

Atualização: Como a --prefixopção existe, agora voto na resposta de @ coudy para esta pergunta. Resposta original abaixo:

Não, npmsempre será instalado no diretório atual ou, com -g, no node_modules amplo do sistema. Você pode conseguir isso com um subshell, o que não afetará seu diretório atual:

(cd some_project && npm install)

Os parênteses fazem com que seja executado em um subshell .


Foi o que eu fiz - cd some_project && npm install. Obrigado
Florin

1
Existe um equivalente disso para o Windows?
Meligy

@Meligy você pode usarSTART /D "%my_dir%" /I /WAIT npm install
Everspace 30/10

1

No Windows 10, não consegui --prefixtrabalhar, então tive que cdexecutá-lo.

cd PATH_TO_FOLDER && npm install 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.