ti-enxame.com

Como faço para instalar as dependências do package.json no diretório atual usando npm

Eu tenho um aplicativo da web: fooapp. Eu tenho um package.json na raiz. Eu quero instalar todas as dependências em um node_modules directory específico. Como eu faço isso?

O que eu quero

Vamos dizer que eu tenho duas dependências widget. Eu quero acabar com uma estrutura de diretórios como esta:

node_modules/
  widgetA
  widgetB
fooapp/
  package.js
  lib
  ..

O que eu ganho

quando eu executo npm install fooapp/ eu recebo isto:

node_modules/
  fooapp/
    node_modules/
      widgetA
      widgetB
    package.js
    lib/
    ..
fooapp/
  package.js
  lib/
  ..

o npm faz uma cópia do meu diretório de aplicativos no diretório node_modules e instala os pacotes dentro de outro diretório node_modules.

Eu entendo isso faz sentido para instalar um pacote. Mas eu não require() meu aplicativo da web dentro de outra coisa, eu o executo diretamente. Eu estou procurando uma maneira simples de instalar minhas dependências em um diretório node_modules específico.

173
Daniel Beardsley

Corrida:

npm install

de dentro do diretório do seu aplicativo (ou seja, onde o pacote.json está localizado) instalará as dependências para seu aplicativo, em vez de instalá-lo como um módulo, - como descrito aqui . Estes serão colocados em ./node_modules em relação ao seu arquivo package.json (é na verdade um pouco mais complexo que isso, então verifique os documentos npm aqui ).

Você está livre para mover o diretório node_modules para o diretório pai do seu aplicativo, se desejar, porque o mecanismo 'require' do nó entende isso. No entanto, se você quiser atualizar as dependências do seu aplicativo com install/update, o npm não verá os 'node_modules' realocados e, em vez disso, criará um novo dir, novamente em relação ao package.json.

Para evitar isso, basta criar um symlink para os node_modules realocados a partir do diretório do seu aplicativo:

ln -s ../node_modules node_modules
339
ireddick

No meu caso eu preciso fazer

Sudo npm install  

meu projeto está dentro de/var/www, então eu também preciso definir permissões adequadas.

13
aesede