Respostas:
Você pode usar a --prefixopção:
mkdir -p ./install/here/node_modules
npm install --prefix ./install/here <package>
Os pacotes serão instalados no ./install/here/node_modules. A mkdiré necessária uma vez NPM poderiam escolher um já existente node_modulesdiretório mais acima na hierarquia. (Consulte a documentação do npm nas pastas .)
npm install(sem nome do pacote)? Eu instalei isso diretamente, mas o npm procura package.jsonno {prefix}. O que eu também pretendo é poder deixar o packages.jsonroot no projeto e, ao mesmo tempo, instalar todos os pacotes {project root}/{project webroot}.
npm install, mas --prefixparece uma solução melhor, se não estiver causando uma recursão.
Na documentação , está indicado: Use a opção prefix junto com a opção global :
A configuração do prefixo é padronizada para o local em que o nó está instalado. Na maioria dos sistemas, é / usr / local . No Windows, esse é o local exato do binário node.exe. Nos sistemas Unix, é um nível superior, pois o nó geralmente é instalado em {prefix} / bin / node, em vez de {prefix} /node.exe .
Quando o sinalizador global é definido, o npm instala coisas nesse prefixo. Quando não está definido, ele usa a raiz do pacote atual ou o diretório de trabalho atual, se ainda não estiver em um pacote.
(Ênfase por eles)
Portanto, em seu diretório raiz, você pode instalar com
npm install --prefix <path/to/prefix_folder> -g
e instalará a node_modulespasta na pasta
<path/to/prefix_folder>/lib/node_modules
requireinstalar pacotes globalmente, pode?
A partir da versão 3.8.6 do npm, você pode usar
npm install --prefix ./install/here <package>
para instalar no diretório especificado. O NPM cria uma node_modulespasta automaticamente, mesmo quando um node_modulesdiretório já existe na hierarquia superior. Você também pode ter um package.jsonno diretório atual e instalá-lo no diretório especificado usando a --prefixopção:
npm install --prefix ./install/here
No npm 6.0.0, você pode usar
npm install --prefix ./install/here ./
para instalar o package.json no diretório atual no diretório "./install/here". Há uma coisa que eu notei no Mac: ele cria um link simbólico para a pasta pai dentro do diretório node_modules. Mas ainda funciona.
NOTA: O NPM respeita o caminho que você especificou através da --prefixopção Ele é resolvido conforme a documentação do npm em pastas , somente quando npm installé usado sem a --prefixopção
Can't install <current directory>: Missing package name
package.jsonarquivo dentro./install/here