Existe uma maneira de mover o diretório node_modules em um aplicativo para, digamos, / vendor / node_modules como o Bower faz com o arquivo bowerrc? Achei que poderia ser especificado em package.json, mas não consigo encontrar uma solução. Sua ajuda é muito apreciada.
96
node_modules
inpackage.json
, e a resposta do xShirase simplesmente não fornece uma maneira de fazer isso.Respostas:
sim, você pode, basta definir a variável env NODE_PATH:
export NODE_PATH='yourdir'/node_modules
De acordo com o doc:
Fonte
fonte
process.env
Resumindo: não é possível e, ao que parece, nunca será suportado (veja aqui https://github.com/npm/npm/issues/775 ).
Existem alguns trabalhos improvisados com o uso de CLI ou ENV-Variables (veja a resposta selecionada), .npmrc-Config-Files ou
npm link
- o que todos eles têm em comum: Eles nunca são apenas específicos do projeto, mas sempre algum tipo deglobal
soluções.Para mim, nenhuma dessas soluções é realmente limpa porque os contribuidores do seu projeto sempre precisam criar alguma configuração especial ou ter algum conhecimento especial - eles não podem simplesmente
npm install
e funciona.Portanto: Ou você terá que colocar seu package.json no mesmo diretório onde deseja que seu node_modules seja instalado, ou conviver com o fato de que eles sempre estarão no diretório-raiz de seu projeto.
fonte
O Yarn é compatível com este recurso:
# .yarnrc file in project root --modules-folder /node_modules
Mas sua experiência pode variar dependendo de quais pacotes você usa. Não tenho certeza se você gostaria de entrar naquela toca do coelho.
fonte
Não tenho certeza se é isso que você tinha em mente, mas acabei perguntando porque não consegui instalar
node_modules
dentro do meu diretório do projeto, pois ele estava montado em um sistema de arquivos que não suportava links simbólicos (uma pasta VM "compartilhada" )Encontrei a seguinte solução alternativa:
package.json
arquivo para uma pasta temporária em um sistema de arquivos diferentenpm install
lánode_modules
diretório resultante de volta para o diretório do projeto, usandocp -r --dereference
para expandir os links simbólicos em cópias.Espero que isso ajude alguém que tenha essa questão ao procurar uma maneira de mudar
node_modules
para um sistema de arquivos diferente.Outras opções
Há outra solução alternativa, que encontrei no problema do github ao qual @Charminbear vinculou , mas não funciona
grunt
porque não é compatívelNODE_PATH
com https://github.com/browserify/resolve/issues/136 :fonte