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>
.
pnpm link <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 ejecutapnpm link --dir ../bar
, entoncesfoo
se vinculará abar/node_modules/foo
.
pnpm link --global
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.
pnpm link --global <pkg>
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
.
Diferencia entre pnpm link <dir>
y pnpm link --dir <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
¿Cuál es la diferencia entre pnpm link
y usar el protocolo file:
?
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.
Cuando se trabaja con las dependencias peer se recomienda usar el file:
protocolo. Resuelve de mejor manera las dependencias peer de las dependencias del proyecto, asegurando que la dependencia vinculada usará correctamente las versiones de las dependencias especificadas en su proyecto principal, generando comportamientos más consistentes y esperados.
Feature | pnpm link | Protocolo file: |
---|---|---|
Enlace simbólico/Enlace duro | Enlace simbólico | Enlace duro |
Refleja las modificaciones del código fuente | Sí | Sí |
Instala dependencias del paquete vinculado | No (requiere instalación manual) | Sí (sobreescribe el node_modules del paquete vinculado) |
Usa un administrador de paquetes diferente para la dependencia | Posible (p. ej., use npm para paquete vinculado) | No, usará pnpm |