Alterar o diretório de instalação global padrão para os módulos node.js no Windows?


134

No meu windows a instalação PATHinclui C:\Program Files\nodejs, onde node.exeé executável . Eu sou capaz de iniciar a nodepartir do shell, bem como npm. Gostaria que novos executáveis ​​fossem instalados C:\Program Files\nodejstambém, mas parece impossível de alcançar.

Configuração NODE_PATHe NODE_MODULESvariáveis ​​não mudam nada: as coisas ainda estão instaladas %appdata%\npmpor padrão.

Como posso alterar o caminho da instalação global?


5
Provavelmente porque o gremo deseja ter todas as dependências relacionadas ao nodejs em um único local. O problema é que, com a atualização do nodejs, você perderia todos os pacotes instalados. Por outro lado, colocar npm na pasta% appdata% do usuário torna inacessível para outro usuário na mesma máquina. Pense em instalá-lo como usuário normal versus administrador.
Volker E.


1
Mover-se de% AppData% para um local mais controlado faz muito sentido para mim, pois parece bastante temp temp -ish para mim. (Fazendo o mesmo para os perfis do Firefox e alguns outros). No entanto, C:\Program Filesestá preparado para constantes problemas com os administradores. ➪ Prefiro mudar fazer D:\my-repository\npmou algo assim.
precisa

2
@WiredPrairie porque instalar nas pastas do usuário é praticamente estúpido. O objetivo de instalar pacotes globalmente é que um sistema como um todo pode acessar esses pacotes.
Michael Trouw

4
Aqui está uma razão para fazer isso: na minha rede, você não tem permissão para executar código fora da pasta AppData, porque é assim que o malware, especialmente o CodeLocker, é baixado e executado. É uma camada extra de proteção contra malware. Como o Node instala coisas lá, não consigo executar os módulos do nó sem mover o local da instalação ou diminuir a segurança no meu sistema.
Steve Hiner 9/06/16

Respostas:


81

Tudo o que você precisa é ler a npm-foldersdocumentação . Não quero iniciar meu notebook Win agora, portanto não posso verificá-lo, mas você deve mudar apenas prefixpara c:\Program Files\nodejsno seu arquivo de configuração. Se você deseja alterá-lo globalmente para todos os usuários, edite o c:\Program Files\nodejs\npmrcarquivo, caso contrário, crie / edite c:\Users\{username}\.npmrc.

Mas essa mudança provavelmente terá alguns efeitos colaterais, portanto, leia esta discussão antes. Eu acho que sua ideia não é boa.


33
Encontrei o npmrcarquivo emC:\path\to\nodejs\node_modules\npm\npmrc
Volker E.

3
altere também o local do cache npm para um diretório local usando npm config set cache <new cache location> --globalse você tiver problemas ao instalar os módulos e o cache estiver em uma unidade compartilhada. Eu tenho esse erro, ENOENT: no such file or directoryquando o cache estava em uma unidade compartilhada
RedDevil

1
Não se esqueça de atualizar a variável PATH do sistema para apontar para a nova pasta npm.
Hayko koryun

64

tentar instalar pacotes globaisC:\Program Files (x86)\nodejs\ me deu problemas de Executar como Administrador , porque o npm estava tentando instalar no
C:\Program Files (x86)\nodejs\node_modules\

Para resolver isso, altere o diretório de instalação global para C:\Users\{username}\AppData\Roaming\npm:

em C:\Users\{username}\, crie um .npmrcarquivo com o conteúdo:

prefix = "C:\\Users\\{username}\\AppData\\Roaming\\npm"

referência


instalador do nodejs x86 do ambienteC:\Program Files (x86)\nodejs\ no Windows 7 Ultimate N SP1 de 64 bits
node --version: v0.10.28
npm --version: 1.4.10


É estranho que eu estivesse usando o npm 2.1.6 e instalando todos os módulos globais em% appdata% / npm, agora que o atualizei para o 2.6.1, ele continua tentando (e com falha) instalar o c: \ windows \ arquivos de programa \ .. Você sabe quando esse comportamento mudou?
WORMSS

1
aqui está alguns diffs nó wiki
Jake Berger

parece que tinha a ver com uma maneira diferente de instalar o npm. Obrigado pelo diff embora.
WORMSS

2
prefixo do conjunto de configurações do npm C: \ Users \ {nome de usuário} \ AppData \ Roaming \ npm
Bernhard Döbler

62

Você pode ver minha resposta a isso na minha resposta a outra pergunta .


No Windows, o caminho de instalação global está realmente no diretório de perfil do usuário

  • %USERPROFILE%\AppData\Roaming\npm
  • %USERPROFILE%\AppData\Roaming\npm-cache
  • AVISO: Se você estiver realizando eventos programados ou outra automação como um usuário diferente, execute-o npm installcomo esse usuário. Alguns módulos / utilitários devem ser instalados globalmente.
  • Bugs do instalador: talvez seja necessário criar esses diretórios ou adicionar o ...\npmdiretório ao caminho do usuário.

Para alterar o local "global" de todos os usuários para um local global compartilhado mais apropriado %ALLUSERSPROFILE%\(npm|npm-cache)(faça isso como administrador):

  • crie um [NODE_INSTALL_PATH]\etc\diretório
    • isso é necessário antes de você tentar npm config --global ...ações
  • crie os locais globais (admin) para módulos npm
    • C:\ProgramData\npm-cache - módulos npm vão aqui
    • C:\ProgramData\npm - scripts binários para módulos instalados globalmente aqui
    • C:\ProgramData\npm\node_modules - módulos instalados globalmente vão aqui
    • defina as permissões adequadamente
      • administradores: modificar
      • usuários autenticados: leitura / execução
  • Definir configurações globais (prompt de comando do administrador)
    • npm config --global set prefix "C:\ProgramData\npm"
    • npm config --global set cache "C:\ProgramData\npm-cache"
  • Adicione C:\ProgramData\npmà variável de ambiente Path do seu sistema

Se você deseja alterar o local "global" do usuário para o %LOCALAPPDATA%\(npm|npm-cache)caminho:

  • Crie os diretórios necessários
    • C:\Users\YOURNAME\AppData\Local\npm-cache - módulos npm vão aqui
    • C:\Users\YOURNAME\AppData\Local\npm - scripts binários para módulos instalados vão aqui
    • C:\Users\YOURNAME\AppData\Local\npm\node_modules - módulos instalados globalmente vão aqui
  • Configurar npm
    • npm config set prefix "C:\Users\YOURNAME\AppData\Local\npm"
    • npm config set cache "C:\Users\YOURNAME\AppData\Local\npm-cache"
  • Adicione o novo caminho npm ao seu ambiente PATH.
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"

1
Definir a localização global como C: \ ProgramData, conforme sua sugestão do meio, parece ser o melhor lugar para isso em um ambiente Windows, mas não vejo como você pode definir o prefixo no arquivo de configuração global quando o prefixo é usado para encontre o arquivo de configuração global. Consegui o mesmo resultado editando o arquivo de configuração C: \ Arquivos de programas \ nodejs \ node_modules \ npm \ npmrc, mas suspeito que essa alteração possa ser substituída por uma atualização em algum momento.
Oenpelli

@oenpelli Nesse caso, "global" é o .npmrcarquivo do usuário no diretório home / profile. Precisaria ser definido para todos os usuários.
Tracker1

Se não tenho permissão de administrador no Windows, como posso alterar a instalação global?
liam xu

liam, você pode ajustar isso para o seu usuário através de um .npmrcarquivo no diretório do seu perfil ... porém, sim, nesse ponto.
Tracker1

19

Com base no conceito de instalação chocolateye na idéia sugerida pelo @Tracker, o que funcionou para mim foi o seguinte e todos os usuários do Windows ficaram felizes em trabalhar com nodejse npm.

Escolha C:\ProgramData\nodejscomo diretório de instalação nodejse instale nodejscom qualquer usuário que seja membro do grupo de administradores.

Isso pode ser feito com chocolate como: choco install nodejs.install -ia "'INSTALLDIR=C:\ProgramData\nodejs'"

Em seguida, crie uma pasta chamada npm-cachena raiz do diretório de instalação, que seria a seguir C:\ProgramData\nodejs\npm-cache.

Crie uma pasta chamada etcna raiz do diretório de instalação, que seria a seguir C:\ProgramData\nodejs\etc.

Defina NODEa variável de ambiente como C:\ProgramData\nodejs.

Defina NODE_PATHa variável de ambiente como C:\ProgramData\nodejs\node_modules.

Certifique-se de que %NODE%a variável de ambiente criada anteriormente seja adicionada (ou seu caminho) seja adicionado à %PATH%variável de ambiente.

Edite %NODE_PATH%\npm\npmrccom o seguinte conteúdoprefix=C:\ProgramData\nodejs

No prompt de comando, defina a configuração global da seguinte maneira ...

npm config --global set prefix "C:\ProgramData\nodejs"

npm config --global set cache "C:\ProgramData\nodejs\npm-cache"

É importante que as etapas acima sejam executadas preferencialmente em sequência e antes de atualizar o npm ( npm -g install npm@latest) ou tentar instalar qualquer npmmódulo.

A execução das etapas acima nos ajudou a executar a nodejsinstalação em todo o sistema, facilmente disponível para todos os usuários com permissões apropriadas. Cada usuário pode então executar nodee npmconforme necessário.


qual é a saída da 'lista de configurações do npm'. Além disso, você está executando no Windows ou Linux?
11556 Damilola

Tentei em ambos. npm config add prefixfunciona, mas nenhuma das variáveis ​​de ambiente mencionadas aqui. Eu não queria abrir outra pergunta porque esta pergunta cobre, mas as respostas não (além npm config).
precisa

A variável de ambiente NODE é essencialmente apenas para expor os binários. Você ainda precisa definir o prefixo e o cache (se não tiver sido definido anteriormente) conforme mencionado no procedimento.
11555 Damilola

Oh obrigada. Isso não ficou muito claro nas respostas ou em qualquer outro lugar no Google. Eu estava procurando por variáveis ​​de ambiente, pois essas são mais fáceis de alterar programaticamente, mas suponho que os comandos Bash de uma linha também estejam OK.
trysis

Isso funcionou lindamente para mim. Obrigado pelas instruções detalhadas!
ErnestoP

15

Você deve usar este comando para definir a localização global da instalação dos pacotes npm

(git bash) npm config --global set prefix </path/you/want/to/use>/npm

(cmd / git-cmd) npm config --global set prefix <drive:\path\you\want\to\use>\npm

Você também pode considerar o npm-cachelocal ao lado dele. (como seria em uma instalação normal do nodejs no windows)

(git bash) npm config --global set cache </path/you/want/to/use>/npm-cache

(cmd / git-cmd) npm config --global set cache <drive:\path\you\want\to\use>\npm-cache


1
Feliz em ajudar. Também seria uma ótima idéia criar um script shel ou arquivo em lote para executar isso sempre que você mudar seu ambiente. Pelo menos é o que eu faço #
21417 davejoem

Também vale a pena acrescentar "se houver espaços no caminho, por exemplo. "C:\Program Files\blah".
taylorswiftfan

7
  • Etapa 1 :

    prefixo de obtenção de configuração npm

    • O caminho padrão é: %USERPROFILE%\AppData\Roaming\npm
  • Etapa 2 :

    configuração npm obter cache

    • O caminho padrão é: %USERPROFILE%\AppData\Roaming\npm-cache
  • Etapa 3 :

    prefixo do conjunto de configurações npm \ npm

    • exemplo npm config set prefix C:\\dev\\node\\npm
  • Etapa 4 :

    cache do conjunto de configurações npm \ npm-cache

    • exemplo npm config set cache C:\\dev\\node\\npm-cache

Execute as etapas 1 e 2 novamente para verificar se os caminhos são atualizados conforme necessário

É isso aí. Sempre que você instalar pacotes globais, deverá vê-los instalados dentro de \ npm \ node_modules


Obrigado, sua solução resolveu meu problema. Nas últimas 2 semanas, eu estava tentando resolver o problema. Na verdade, o caminho do usuário do Windows tinha espaços como o ABC XYZ WJS; então, mudei o caminho para apenas uma palavra, depois que minha instalação do npm estava dando erros, então sua solução me ajuda a limpar o cache e configurá-lo para meu novo local.
Tahir Afridi

4

A pasta global padrão é C:\Users\{username}\AppData\Roaming\npm. Você pode criar (se não existir) um .npmrcarquivo C:\Users\{username}\e adicioná-lo prefix = "path\\to\\yourglobalfolder". Observe que, nas janelas, o caminho deve ser separado por double back-slash.


3

Usar um link simbólico do Windows nos caminhos C: \ Users {nome de usuário} \ AppData \ Roaming \ npm e C: \ Users {nome de usuário} \ AppData \ Roaming \ npm-cache para o destino funcionou muito bem para mim.

Como adicionar um link simbólico

insira a descrição da imagem aqui


1

No Windows, se você quiser mover a pasta npm ou nodejs no disco C para outro local, mas ainda garantir que o nó e o npm funcionem bem, é possível criar um link simbólico como este: Abra o Prompt de Comando:

mklink /D "your_location_want_to_create_symlink" "location_of_node_npm_file"

Exemplo:

mklink /D "C:\Users\MyUser\AppData\Roaming\npm" "D:\Nodejs Data\npm"

Agora que você criou um link simbólico para a pasta npm, este link simbólico se referirá a D:\Nodejs Data\npmTudo funcionará bem.


0

Tentei a maioria das respostas aqui, nada parece funcionar no meu caso. Então mudei o local Temp nas minhas variáveis ​​env para C: \ npm. Então começou a funcionar. Esta não é uma boa ideia, mas uma solução temporária.


0

Exclua a pasta do nó completamente da pasta do arquivo de programa. Desinstale o node.js e reinstale-o. change Caminho da variável de ambiente PATH. exclua o arquivo .npmrc de C: \ users \ yourusername


2
Você tem alguma documentação ou fonte que apóie sua declaração? Como está escrito no estado atual, é difícil saber se sua sugestão realmente funciona sem tentar por si mesma, o que leva tempo que poderia ser salvo de outra maneira.
Filnor 5/02

0

ele não requer muitas configurações; basta acessar as configurações avançadas do sistema, copiar o caminho em que você instalou seu nó e apenas criar uma variável de ambiente e verificar com o comando node -v em seu prompt!


0

Para alterar o diretório de instalação global padrão dos módulos node.js (npm) no Windows, é necessário corrigir 2 caminhos.

Primeiro verifique o caminho atual em que os módulos do nó estão sendo instalados, ao tentar instalá-los globalmente usando o seguinte comando:

lista npm -g --depth = 0

Ele retornará o caminho atual em que os módulos do nó estão sendo instalados agora. Exemplo: D: \ vsc \ typescript

Agora visite o caminho a seguir para ver as pastas npm e npm-cache. C: \ Usuários \ nome de usuário (número OR) \ AppData \ Roaming

Na pasta Roaming da sua unidade C, você encontrará as pastas npm e npm-cache. Clique na pasta + npm + e selecione o caminho [Basta clicar no caminho da barra que será selecionado automaticamente, copie-o]. Esta é uma imagem de caminho que você precisa selecionar

Depois de copiar esse caminho, configure-o para as variáveis ​​de ambiente, com um nome de variável Path (qualquer coisa que você possa selecionar como um nome). Agora você definiu o caminho para sua pasta npm, agora é a hora de definir o prefixo. Vá para a pasta npm e verifique se a pasta node_module existe; caso contrário, crie uma nova pasta denominada node_modules. Todos os módulos globais entrarão nesta pasta após concluir todas as etapas.

Etapa final: Vá para o CMD e corrija o seguinte comando:

npm definir prefixo C: \ Usuários \ nome de usuário (Número) \ AppData \ Roaming \ npm \ node_modules

Novamente, este é o mesmo caminho que selecionamos para a variável de ambiente, estamos apenas adicionando mais uma pasta no caminho e isso é node_module.

Tudo pronto .... Experimente agora ... Funcionará ..


0

Localize o caminho atual da instalação do pacote do nó global seguindo o comando

lista npm -g --depth = 0

Altere esse caminho para o caminho correto, seguindo o comando.

npm definir prefixo C: \ Usuários \ nome de usuário (Número) \ AppData \ Roaming \ npm \ node_modules

Funcionou para mim. Leia minha resposta anterior para entender melhor.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.