É possível especificar um destino de pacote personalizado para npm install
, por meio de um sinalizador de comando ou variável de ambiente?
Por padrão, as instalações locais do npm acabam no node_modules
diretório atual, mas eu quero que ele seja instalado em node_modules
um diretório diferente, por exemplo vendor/node_modules
. Como posso fazer isso acontecer?
./node_modules
, eu quero que o npm os instale em subdiretórios de./vendor/node_modules
. (Ou para saber que isso não é configurável).require
d), mas não quero instalá-lo globalmente.Respostas:
TL; DR
Você pode fazer isso usando a
--prefix
bandeira e a--global
bandeira *.* Mesmo que seja uma instalação "global", os compartimentos instalados não serão acessíveis pela linha de comando, a menos que
~/foo/vendor/node_modules
exista noPATH
.TL; R
Cada atributo configurável de
npm
pode ser definido em qualquer um dos seis locais diferentes. Em ordem de prioridade:--prefix ./vendor/node_modules
NPM_CONFIG_PREFIX=./vendor/node_modules
$HOME/.npmrc
ouuserconfig
param$PREFIX/etc/npmrc
ouuserconfig
parampath/to/npm/itself/npmrc
Por padrão, os pacotes instalados localmente são acessados
./node_modules
. os globais vão para aprefix
variável de configuração (/usr/local
por padrão).Você pode executar
npm config list
para ver sua configuração atual enpm config edit
alterá-la.PS
Em geral,
npm
a documentação do é realmente útil. A seção de pastas é uma boa visão geral estrutural do npm e a seção de configuração responde a essa pergunta.fonte
./vendor/node_modules/lib/bower
usonpm#3.8.0
No version provided in package.json
bins won't be accessible through the command line
. O programa pode, naturalmente, ser chamado utilizando o caminho completonpm install [email protected] -g --prefix c:\my_npm` calling
c: \ my_npm \ eslint --fix my.js`npm install
no diretório A com o arquivo package.json, os pacotes serão instalados no diretório B. Parece que esta solução é para pacotes individuais sendo instalados.npm install
instala dependências localmente.npm install X -g -prefix "..."
instala o módulo X no prefixo,npm install -g -prefix "..."
instala o pacote atual no prefixo.Se você deseja isso em config, pode definir o npm config da seguinte forma:
ou
Verifique sua configuração com
npm config ls -l
Ou como @pje diz e use a
--prefix
bandeirafonte
npm install
ainda será instalado localmente,./node_modules
masnpm install -g
será instalado no"$(pwd)/vendor/node_modules"
. Posso imaginar as configurações e depois esquecê-las, voltando mais tarde, me perguntando por que meus pacotes globais estão agindo de maneira estranha.No OSX, você pode acessar o usuário
$HOME
(provavelmente / Users / seunome /) e, se ele ainda não existir, criar um.npmrc
arquivo (um arquivo que o npm usa para configuração do usuário) e criar um diretório para os pacotes npm ser instalado em (por exemplo, / Users / seunome / npm). Nesse arquivo .npmrc, defina "prefix" para o seu novo diretório npm, que será onde os pacotes npm instalados "globalmente" serão instalados; esses pacotes "globais" estarão obviamente disponíveis apenas para sua conta de usuário.Em .npmrc:
prefix=${HOME}/npm
Em seguida, execute este comando na linha de comando:
npm config ls -l
Ele deve fornecer saída tanto na sua configuração local quanto na configuração global do npm, e você deve ver a configuração do seu prefixo local refletida, provavelmente perto do topo da longa lista de saída.
Por segurança, recomendo esta abordagem para configurar o comportamento npm da sua conta de usuário em exibir suas
/usr/local
pastas, o que vi recomendado em outro lugar.fonte
No Windows 7, por exemplo, o seguinte conjunto de comandos / operações pode ser usado.
Crie uma variável de ambiente pessoal, as barras invertidas duplas são obrigatórias:
%NPM_HOME%
C:\\SomeFolder\\SubFolder\\
Agora, defina os valores de configuração para as novas pastas (nomes de arquivos de exemplo):
npm config set prefix "%NPM_HOME%\\npm"
npm config set cache "%NPM_HOME%\\npm-cache"
npm config set tmp "%NPM_HOME%\\temp"
Opcionalmente, você pode limpar o conteúdo das pastas originais antes que a configuração seja alterada.
Exclua o npm-cache
npm cache clear
Listar os módulos npm
npm -g ls
Exclua os módulos npm
npm -g rm name_of_package1 name_of_package2
fonte
Depois de procurar por mim mesmo, querendo que vários projetos com dependências compartilhadas sejam mais secos, descobri:
require()
require()
bin
eman
caminhos para$PATH
npm link
( info ) permite que você use uma instalação local como fonte para globais→ siga o caminho do nó e instale localmente
ref:
fonte