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.

pnpm link <dir> vincula el paquete de <dir> a los node_modules del paquete donde se ejecutó el comando. pnpm link --dir <dir> vincula el paquete desde el directorio de trabajo actual a <dir>.

# El directorio actual es foo
pnpm link ../bar

- foo
- node_modules
- bar -> ../../bar
- bar

# El directorio actual es bar
pnpm link --dir ../foo

- foo
- node_modules
- bar -> ../../bar
- bar

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 # vincula foo globalmente
cd ~/projects/my-project
pnpm link --global foo # vincula 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 # vincula 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 se 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 dentro de su package.json.

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

Cuando utiliza pnpm link, el paquete vinculado está vinculado simbólicamente desde el código fuente. Usted 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á que instalarlas manualmente en el código fuente. Esto puede ser útil cuando tiene que usar un administrador de paquetes para el paquete vinculado, por ejemplo, si desea usar npm para el paquete vinculado, pero pnpm para su proyecto.

Cuando utiliza el protocolo file: en dependencies, el paquete vinculado está vinculado físicamente al node_modules de su proyecto, 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, sobreescribiendo el node_modules del paquete vinculado.

info

When dealing with peer dependencies it is recommended to use the file: protocol. It better resolves the peer dependencies from the project dependencies, ensuring that the linked dependency correctly uses the versions of the dependencies specified in your main project, leading to more consistent and expected behaviors.

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