Onde o npm instala pacotes?

977

Alguém pode me dizer onde posso encontrar os módulos Node.js, que eu instalei usando npm?

trnc
fonte
3
no linux mint é$HOME/.npm-global/lib/node_modules
Synxmax 16/08
9
Só assim cada um sabe, a instalação sem -gopção irá instalar um módulo para você trabalhar diretório por exemplo, se você fizer um diretório dizer ~/Desktop/tmp, em seguida, cd ~/Desktop/tmpem seguida, que npm install appium, em seguida, que lsvocê vai ver node_modules package-lock.jsonporque você instalou um módulo nó appiumpara o seu working directory... super confuso porque -gdeve ser essencialmente o defaultmas não é.
7779
2
@ the_prole - obrigado, isso foi incrivelmente útil .
Fattie 7/09/19

Respostas:

1142

Bibliotecas globais

Você pode executar npm list -gpara ver quais bibliotecas globais estão instaladas e onde estão localizadas. Use npm list -g | head -1para saída truncada mostrando apenas o caminho. Se você deseja exibir apenas os pacotes principais e não os subpacotes que o instalam - você pode usar - o npm list --depth=0que mostrará todos os pacotes e para obter apenas os pacotes instalados globalmente, basta adicionar -g ie npm list -g --depth=0.

Nos sistemas Unix, eles são normalmente colocados /usr/local/lib/nodeou /usr/local/lib/node_modulesinstalados globalmente. Se você definir a NODE_PATHvariável de ambiente para esse caminho, os módulos poderão ser encontrados por nó.

Windows XP - %USERPROFILE%\AppData\npm\node_modules
Windows 7, 8 e 10 -%USERPROFILE%\AppData\Roaming\npm\node_modules

Bibliotecas não globais

Bibliotecas não globais estão instaladas na node_modulessubpasta na pasta em que você está atualmente.

Você pode executar npm listpara ver as bibliotecas não globais instaladas para o seu local atual.

Ao instalar, use a opção -g para instalar globalmente

npm install -g pm2- pm2 será instalado globalmente. Em geral, ele será encontrado em /usr/local/lib/node_modules(Use npm root -gpara verificar onde.)

npm install pm2- pm2 será instalado localmente. Em seguida, ele normalmente será encontrado no diretório local em/node_modules

Decko
fonte
26
Se você estiver usando o nvm, seus módulos globais poderão estar em um dos vários locais, dependendo da versão do nó que você está usando no momento. A melhor maneira é usar npm list -gcomo sugerido em outra resposta.
unscriptable
73
não funciona para mim, mostra apenas a pasta bin. "npm root -g" funciona.
whitneyland
7
no Arch linux, os módulos globais estão em / usr / lib. "npm --help" mostra a localização exata como a última linha da saída, por exemplo: [email protected] / usr / lib / node_modules / npm
Gregor
20
para windows 10, colocado em%USERPROFILE%\AppData\Roaming\npm\node_modules
Nirmal Goswami 23/10
11
"npm root -g" está correto - a lista pode funcionar, mas é muita informação, enquanto o outro comando apenas fornece a localização exata que você está procurando. stackoverflow.com/a/24295332/174965
Adam Tolley
581

O comando npm rootinformará o diretório de instalação efetivo dos seus pacotes npm.

Se seu diretório de trabalho atual for um pacote de nós ou um subdiretório de um pacote de nós, npm rootvocê informará o diretório de instalação local. npm root -gmostrará a raiz da instalação global, independentemente do diretório de trabalho atual.

Exemplo:

$ npm root -g
/usr/local/lib/node_modules

Veja a documentação.

Joe Hawkins
fonte
1
+1 nesta resposta (pelo menos no Linux Mint 17 Qianna e npm 3.9.5). Meu mundial node_modulespasta estão em /usr/local/lib/node_modules. Quando eu faço, isto é sudo npm uninstall browserify -g(supondo que eu tinha feito sudo npm install browserify -gantes), ele remove a partir daí.
Nik_m
10
Essa é uma resposta muito mais útil, pois a saída é adequada para compor comandos maiores sem extrair o caminho de um monte de saída.
Adam Tolley 31/03
2
Raiz padrão no sistema operacional Windows é C: \ Users \ your_user_name \ AppData \ Roaming \ npm \ node_modules
Vincent Tang
2
Para o MacOS Mojave 10.14.5, também é/usr/local/lib/node_modules
Jim Aho
89

Para módulos instalados globalmente:

As outras respostas fornecem respostas específicas da plataforma, mas uma genérica é esta:

Quando você instala o módulo global npm install -g something, o npm consulta uma variável de configuração prefixpara saber onde instalar o módulo.

Você pode obter esse valor executando npm config get prefix

Para exibir todos os módulos globais disponíveis nessa pasta, use npm ls -g --depth 0( depth 0para não exibir suas dependências).

Se você deseja alterar o caminho dos módulos globais, use npm config edite insira prefix = /my/npm/global/modules/prefixo arquivo ou use npm config set prefix /my/npm/global/modules/prefix.

Quando você usa algumas ferramentas como nodist , elas alteram o caminho de instalação padrão da plataforma dos módulos npm globais.

jakub.g
fonte
2
Você respondeu à minha pergunta de acompanhamento: "Alguém pode me dizer como posso alterar a localização dos módulos Node.js." Nota: A razão pela qual isso foi importante para mim foi que eu não precisei mudar meu CAMINHO mais uma vez. Descomentei a sugestão padrão no arquivo npmrc que {npm config get prefx} é aberta.
amigos estão dizendo sobre heziko
"Quando você usa algumas ferramentas como nodist, elas alteram o caminho de instalação padrão da plataforma dos módulos npm globais." +1
Jim Aho
65

Nas janelas, eu costumava npm list -gdescobrir. Por padrão, meus pacotes (globais) estavam sendo instalados C:\Users\[Username]\AppData\Roaming\npm.

9swampy
fonte
9
Apenas FYI - Este é o usuário que executa é% AppData% \ npm
Felix
19

Se você está procurando o executável que o npm instalou, talvez porque você queira colocá-lo no seu PATH, você pode simplesmente

npm bin

ou

npm bin -g
Ken Goodridge
fonte
Se você instalou globalmente pacotes npm em que o nó foi instalado com homebrew e depois o npm foi atualizado com o próprio npm, você pode estar recebendo command not founderros. Se assim for, adicione o aboveto seu PATH: export PATH=$PATH:$(npm bin -g)voila
jacob
18

Nas versões anteriores do NPM, os módulos eram sempre colocados em / usr / local / lib / node ou onde quer que você especificasse a raiz do npm no arquivo .npmrc. No entanto, no NPM 1.0+, os módulos são instalados em dois locais. Você pode ter módulos instalados localmente para o seu aplicativo em /.node_modules ou eles podem ser instalados globalmente, o que usará o descrito acima.

Mais informações podem ser encontradas em https://github.com/isaacs/npm/blob/master/doc/install.md

Nick Campbell
fonte
4
Algo a ser observado - com os módulos 1.0 são armazenados em / usr / local / lib / node_modules.
Nick Campbell
@EricSmith seu link está quebrado também
nicolimo86
16

Resposta não direta, mas pode ajudar ....

O npm também possui uma pasta de cache, que pode ser encontrada executando npm config get cache( %AppData%/npm-cacheno Windows).

Os módulos npm são baixados aqui primeiro e depois copiados para a pasta global npm ( %AppData%/Roaming/npmno Windows) ou para a pasta específica do projeto ( your-project/node_modules).

Portanto, se você deseja rastrear pacotes npm e de alguma forma, a lista de todos os pacotes npm baixados (se o cache npm não for limpo) dê uma olhada nesta pasta. A estrutura da pasta é tão{cache}/{name}/{version}

Isso também pode ajudar https://docs.npmjs.com/cli/cache

Alireza Fattahi
fonte
14

Se o módulo foi instalado com o -gsinalizador global ( ), você pode obter a localização pai executando o seguinte comando

npm get prefix

ou

npm ls -g --depth=0

que imprimirá o local junto com a lista de módulos instalados

Felicidades :-)

Mohanraj Balasubramaniam
fonte
13

A maneira mais fácil seria fazer

lista npm -g

para listar o pacote e visualizar o local instalado.

Eu tinha instalado o NPM via chololatey, então o local é

C: \ MyProgramData \ chocolatey \ lib \ nodejs.commandline.0.10.31 \ tools \ node_modules

C: \ MyProgramData \ é o local do repositório com chocolate.

Tharaka
fonte
12

Para obter uma lista compacta sem dependências, basta usar

npm list -g --depth 0
Adam Bubela
fonte
6

Você pode encontrar módulos instalados globalmente pelo comando

npm list -g

Ele fornecerá o local em que os módulos node.js foram instalados.

C:\Users\[Username]\AppData\Roaming\npm

Se você instalar os módulos node.js localmente em uma pasta, poderá digitar o seguinte comando para ver o local.

npm list
Abdul Alim Shakir
fonte
4

Dos documentos :

No npm 1.0, existem duas maneiras de instalar as coisas:

  • globalmente —- Isso {prefix}/lib/node_modulescoloca módulos e coloca arquivos executáveis {prefix}/bin, onde {prefix}geralmente é algo parecido /usr/local. Ele também instala as páginas de manual {prefix}/share/man, se forem fornecidas.

  • localmente - instala seu pacote no diretório de trabalho atual. Os módulos do nó entram ./node_modules, os executáveis ​​entram ./node_modules/.bin/e as páginas do manual não estão instaladas.

Você pode obter o seu {prefix}com npm config get prefix. (Útil quando você instalou o nó com nvm).

edelans
fonte
3

Dos documentos :

Os pacotes são descartados na pasta node_modules sob o prefixo. Ao instalar localmente, isso significa que você pode exigir ("nome do pacote") para carregar seu módulo principal ou ("nome do pacote / lib / caminho / para / sub / módulo") para carregar outros módulos.

As instalações globais nos sistemas Unix vão para {prefix} / lib / node_modules. As instalações globais no Windows vão para {prefix} / node_modules (ou seja, nenhuma pasta lib).

Pacotes com escopo definido são instalados da mesma maneira, exceto que são agrupados em uma subpasta da pasta node_modules relevante com o nome desse prefixo de escopo pelo símbolo @, por exemplo, npm install @ myorg / package colocaria o pacote em {prefix} / node_modules / @ myorg / package. Veja o escopo para mais detalhes.

Se você deseja solicitar () um pacote, instale-o localmente.

Você pode obter o seu {prefix}com npm config get prefix. (Útil quando você instalou o nó com nvm).

Leia sobre localmente .
Leia sobre globalmente .

Randall Flagg
fonte
3

No Ubuntu 14.04, eles são instalados em

/usr/lib/node_modules

Ashutosh Singh
fonte
3

Eu estava começando a enlouquecer pesquisando a configuração real, então aqui está a lista completa de arquivos de configuração no linux:

  • / etc / npmrc
  • /home/youruser/.npmrc
  • /root/.npmrc

no windows: - c / Programa \ Arquivos / nodejs / node_modules / npm / npmrc

Em seguida, no arquivo, o prefixo é configurado:

prefix=/usr

O prefixo é padronizado para / usr no linux, para $ {APPDATA} \ npm no windows

Os módulos do nó estão na árvore de prefixos $ e o caminho deve conter $ prefix / bin

Pode haver um problema:

  • Quando você instala globalmente, usa "sudo su" e /root/.npmrcpode ser usado!
  • Quando você usa localmente sem o sudo: para o usuário é o /home/youruser/.npmrc.
  • Quando seu caminho não representa seu prefixo
  • Quando você o usa npm set -g prefix /usr, define o / etc / npmrc global, mas não substitui o local

Aqui estão todas as informações que faltavam para encontrar o que está configurado onde. Espero ter sido exaustivo.

pdem
fonte
2

Como as outras respostas dizem, a melhor maneira é fazer

npm list -g

No entanto, se você tiver um grande número de npmpacotes instalados, a saída desse comando poderá ser muito longa e muito difícil de rolar para cima (às vezes nem é possível rolar tão longe).

Nesse caso, canalize a saída para o moreprograma, como este

npm list -g | more
Raphi
fonte
2

Windows 10 : Quando executeinpm prefix -g, notei que o local da instalação estava dentro do caminho do shell do git que eu costumava instalar. Mesmo quando esse local foi adicionado ao caminho, o comando do pacote instalado globalmente não seria reconhecido. Corrigido por:

  1. corrida npm config edit
  2. alterando o prefixo para 'C: \ Users \ nome de usuário \ AppData \ Roaming \ npm'
  3. adicionando esse caminho à variável de caminho do sistema
  4. reinstalando o pacote com -g.
Marc Sloth Eastman
fonte
2

Expandindo outras respostas -

npm list -g

mostrará a localização dos pacotes instalados globalmente.

Se você deseja enviar essa lista para um arquivo que você pode pesquisar facilmente em seu editor de texto:

npm list -g > ~/Desktop/npmfiles.txt

TWLATL
fonte
1

Aliás, o npm procurará node_modules nas pastas pai (até a raiz) se não puder encontrar no local.

Vitaliy Markitanov
fonte
1

Se você está tentando acessar seu diretório global a partir do código, pode voltar atrás process.execPath. Por exemplo, para encontrar o wsproxyque está dentro {NODE_GLOBAL_DIR}/bin/wsproxy, você pode apenas:

path.join(path.dirname(process.execPath), 'wsproxy')

Também há como o npmcli funciona @ ec9fcc1/lib/npm.js#L254 com:

path.resolve(process.execPath, '..', '..')

Veja também ec9fcc1/lib/install.js#L521 :

var globalPackage = path.resolve(npm.globalPrefix,
                                 'lib', 'node_modules', moduleName(pkg))

Onde globalPrefixtem um padrão definido em ec9fcc1/lib/config/defaults.js#L92-L105 de:

if (process.env.PREFIX) {
    globalPrefix = process.env.PREFIX
} else if (process.platform === 'win32') {
    // c:\node\node.exe --> prefix=c:\node\
    globalPrefix = path.dirname(process.execPath)
} else {
    // /usr/local/bin/node --> prefix=/usr/local
    globalPrefix = path.dirname(path.dirname(process.execPath))

    // destdir only is respected on Unix
    if (process.env.DESTDIR) {
        globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
    }
}
AT
fonte
Como isso deve funcionar? Por exemplo, o binário do nó está em /usr/bin/node, mas obviamente (já que esse é o bin) os módulos não estão lá; em vez disso, eles estão /usr/lib/node_modules.
Florian Rappl 08/09/19
Atualizado com referência à npmimplementação
AT
Agora esta é uma história diferente; você traz a plataforma (good) e as respectivas variáveis ​​env (apesar de não mencionar que funções importantes, como moduleName, estão fazendo, mas acho que o leitor médio poderá deduzir). Obrigado pela modificação / correção!
Florian Rappl 14/09/19
1

Se você tiver o Visual Studio instalado, descobrirá que ele vem com sua própria cópia do nó, separada da que está no caminho quando você mesmo instalou o nó - o meu está em C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VisualStudio \ NodeJs.

Se você executar o comando npm de dentro deste diretório, descobrirá quais módulos de nó estão instalados no visual studio.

Andy
fonte
0

Windows 7, 8 e 10 -% USERPROFILE% \ AppData \ Roaming \ npm \ node_modules.

Nota: Se você estiver em algum lugar na pasta, digite cd ..até estar no C:diretório. Então digite cd %USERPROFILE%\AppData\Roaming\npm\node_modules. E, magicamente %USERPROFILE%, mudará para Users\YourUserProfile\. Eu só queria esclarecer as idéias mencionadas Deckona primeira resposta. npm list -glistará todos os bits que você instalou globalmente. Se você precisa encontrar o seu projeto relacionado npm package, em seguida cd 'your angular project xyz', em seguida, executar npm list. Ele mostrará a lista de módulos no npm package. Também fornecerá uma lista de dependenciesdesaparecidos, e você pode precisar executar efetivamente esse projeto.

surendrapanday
fonte