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.