Recentemente, tentei atualizar todos os meus pacotes npm instalados executando npm -g update
e recebi este erro:
Error: Refusing to delete: /usr/local/bin/npm
Wat. Este erro aparece quando o npm tenta se atualizar.
Depois de procurar respostas por um momento, encontrei este problema do github . Sim, instalei o nó via brew e ele vem com o npm. Acontece que há um problema com o npm quando ele é instalado via brew. A correção oficial é desinstalar o nó do homebrew instalado, baixar o nó do site oficial e instalá-lo em seu lugar. Mas eu amo homebrew, então rolei a questão e encontrei uma solução alternativa aceitável:
$ npm update -gf
$ brew unlink node && brew link --overwrite node
Adicionar -f
a npm -g update
torna uma atualização forçada. Com esse sinalizador, o npm não se recusará mais a excluir /usr/local/bin/npm
. Bem, pelo menos é assim que eu entendo. Porém, tenha cuidado, pois não é uma coisa segura a se fazer. Mas eu gosto de viver perigosamente, então sim. Caso você queira jogar pelo seguro, não adicione a -f
bandeira npm -g update
. Em vez disso, atualize à força apenas os pacotes que não serão atualizados sem o sinalizador -f. No meu caso, isso é npm.
A segunda linha é consertar os links de homebrew quebrados. E voila! Agora tenho coisas novas em meu node_modules globais, sem recorrer à remoção do nó homebrew instalado.