Saltar al contenido principal
Version: Próxima versión

pnpm link

Alias: ln

Hace que el paquete local actual sea accesible en todo el sistema, o en otra ubicación.

pnpm link <dir>
pnpm link --global
pnpm link --global <pkg>

Opciones

--dir <dir>, -C

  • Predeterminado: Directorio de trabajo actual
  • Tipo: Ruta (como string)

Cambia la ubicación del enlace a <dir>.

Enlaza el paquete desde la carpeta <dir> a los node_modules del paquete situado en la ruta en la que se esté ejecutando este comando u otra especificada a través de la opción --dir.

Por ejemplo, si está dentro de ~/projects/foo y ejecuta pnpm link --dir ../bar, entonces foo se vinculará a bar/node_modules/foo.

Enlaza el paquete desde la ubicación donde se ejecutó este comando o desde donde se especificó a través de la opción --dir a los node_modules globales, por lo que puede ser referenciado desde otro paquete con pnpm link --global <pkg>. Además, si el paquete tiene un campo bin, los archivos binarios del paquete estarán disponibles en todo el sistema.

Enlaza el paquete especificado (<pkg>) de los node_modules globales a los node_modules del paquete desde donde se ejecutó este comando o se especificó usando --dir.

Casos de uso

Reemplazar un paquete instalado con una versión local del mismo

Digamos que tienes un proyecto que utiliza el paquete foo. Desea realizar cambios en foo y probarlos en su proyecto. En este escenario, puede usar pnpm link para vincular la versión local de foo a su proyecto, mientras que package.json no se modificará.

cd ~/projects/foo
pnpm install # instala las dependencias de foo
pnpm link --global # enlaza foo globalmente
cd ~/projects/my-project
pnpm link --global foo # enlaza foo a my-project

También puede vincular un paquete de un directorio a otro directorio, sin usar la carpeta global node_modules:

cd ~/projects/foo
pnpm install # instala dependencias de foo
cd ~/projects/my-project
pnpm link ~/projects/foo # enlaza foo a my-project

Añadir un binario globalmente

Si está desarrollando un paquete que tiene un binario, por ejemplo, una herramienta CLI, puede usar pnpm link --global para que el binario esté disponible en todo el sistema. Esto es lo mismo que usar pnpm install -g foo, pero usará la versión local de foo en lugar de descargarla del registro.

Recuerde que el binario estará disponible solo si el paquete tiene un campo bin en su package.json.

cd ~/projects/foo
pnpm install # instala dependencias de foo
pnpm link --global # enlaza foo globalmente

Cuando utiliza pnpm link, el paquete enlazado está enlazado de forma simbólica desde el código fuente. Puede modificar el código fuente del paquete vinculado y los cambios se reflejarán en su proyecto. Con este método pnpm no instalará las dependencias del paquete vinculado, tendrás que instalarlas manualmente en el código fuente. Esto puede ser útil cuando tiene que usar un administrador de paquetes específico para el paquete vinculado, por ejemplo, si desea usar npm para el paquete vinculado, pero pnpm para su proyecto.

Cuando usa el protocolo file: en dependencies, el paquete vinculado está vinculado a su proyecto node_modules, puede modificar el código fuente del paquete vinculado y los cambios se reflejarán en su proyecto. Con este método, pnpm también instalará las dependencias del paquete vinculado, anulando el node_modules del paquete vinculado.

Cuando se trata de dependencias de pares, se recomienda utilizar el protocolo file:. Resuelve mejor las dependencias de pares de las dependencias del proyecto, asegurando que la dependencia vinculada use correctamente las versiones de las dependencias especificadas en su proyecto principal, lo que genera comportamientos más consistentes y esperados. :::
Característicapnpm linkProtocolo file:
Enlace simbólico/Enlace duroEnlace simbólicoEnlace duro
Refleja las modificaciones del código fuente
Instala dependencias del paquete vinculadoNo (requiere instalación manual)Sí (sobreescribe el node_modules del paquete vinculado)
Usa un administrador de paquetes diferente para la dependenciaPosible (p. ej., use npm para paquete vinculado)No, usará pnpm