Skip to main content

Npm Link | Npm

  • Npm Link | Npm

O comando npm link é uma funcionalidade do npm (Node Package Manager) que permite criar um link simbólico entre um pacote local (que você está desenvolvendo) e outra aplicação local que depende desse pacote. Isso é especialmente útil para testar e desenvolver pacotes NPM de maneira integrada, sem precisar publicá-los a cada alteração.


  1. No Pacote (Fonte):

    • O comando cria um link simbólico global para o pacote em desenvolvimento.
    • Esse link é armazenado em um local global no sistema.
  2. Na Aplicação (Destino):

    • A aplicação que usa o pacote é configurada para utilizar o link simbólico, ao invés de buscar a dependência no repositório NPM ou no node_modules.

  1. Teste Local de Pacotes:
    • Útil para testar as alterações de um pacote antes de publicá-lo no repositório NPM.
  2. Desenvolvimento Conjunto:
    • Permite trabalhar simultaneamente no pacote e na aplicação que o utiliza.
  3. Evitar Publicações Desnecessárias:
    • Evita a necessidade de publicar versões intermediárias apenas para testar o comportamento em uma aplicação.

1. No Diretório do Pacote

No diretório onde você está desenvolvendo o pacote:

npm link

Isso cria um link simbólico global para o pacote. Ele será listado na saída de:

npm ls -g --depth=0

2. Na Aplicação que Usa o Pacote

No diretório da aplicação que depende do pacote:

npm link <nome-do-pacote>

Substitua <nome-do-pacote> pelo nome definido no campo "name" do package.json do pacote.

Isso cria um link simbólico no node_modules da aplicação, apontando para o pacote local.


  1. Configuração Inicial:

    • No pacote:
      npm link
    • Na aplicação:
      npm link <nome-do-pacote>
  2. Desenvolvimento:

    • Faça alterações no código do pacote.
    • Teste as alterações diretamente na aplicação que usa o pacote.
  3. Desfazer o Link:

    • Na aplicação, remova o link:
      npm unlink <nome-do-pacote>
    • No pacote, remova o link global:
      npm unlink

  • Desenvolvimento Integrado: Testa mudanças no pacote em tempo real na aplicação dependente.
  • Sem Publicação: Não é necessário publicar no NPM para testar.
  • Evita Instalações Repetidas: As mudanças no pacote são automaticamente refletidas na aplicação.

Limitações e Cuidados

  1. Problemas com Dependências:

    • Se o pacote tem dependências que também estão instaladas na aplicação, pode haver conflitos.
    • O npm link usa o diretório node_modules do pacote em desenvolvimento, que pode não ser compatível com a aplicação.
  2. Link Temporário:

    • O link simbólico é válido apenas localmente e precisa ser desfeito manualmente antes da publicação.
  3. Performance:

    • Para projetos grandes, o uso de links simbólicos pode ser mais lento do que instalações diretas.

Outra abordagem para testar pacotes locais é usar o caminho do sistema diretamente:

npm install /caminho/para/seu/pacote

Isso instala o pacote localmente, mas não cria links simbólicos. Ideal para cenários onde você quer uma cópia estática.


Exemplo Prático

1. Criando um Pacote

  1. No diretório do pacote:

    mkdir meu-pacote
    cd meu-pacote
    npm init -y
  2. Adicione algum código em index.js:

    module.exports = () => console.log("Olá do meu pacote!");
  3. Crie o link global:

    npm link

2. Usando o Pacote na Aplicação

  1. No diretório da aplicação:

    mkdir minha-app
    cd minha-app
    npm init -y
    npm link meu-pacote
  2. Use o pacote em index.js da aplicação:

    const meuPacote = require("meu-pacote");
    meuPacote();
  3. Execute o script:

    node index.js

    Saída:

    Olá do meu pacote!
  4. Alterações no pacote refletem imediatamente na aplicação.