Estoy creando un paquete y quería crear pruebas solo si se llama a una determinada función del mismo paquete local. No quiero profundizar demasiado en los detalles, pero estoy recorriendo el código con un complemento de Babel para buscar una importación de módulo específica para realizar algunas acciones.
El problema es que cuando importo esta función uso rutas locales, como esta:
import { myFunction } from './';En cambio, me gustaría tener algo como:
import { myFunction } from 'my-real-package-name';Traté de instalar mi paquete localmente, pero ahora recibo este error cuando intento compilar:
error TS5055: Cannot write file '/my-real-package-name/lib/index.d.ts' because it would overwrite input file. Siempre puedo verificar si la importación es de ./ o my-real-package-name pero preferiría usar my-real-package-name ya que es más seguro evitar problemas inesperados.
¿Hay otra manera de lograr esto?
Creo que lo que está buscando es npm link o un enlace de yarn link según su administrador de paquetes.
De la página de documentación de npm:
Esto es útil para instalar sus propias cosas, para que pueda trabajar en ellas y probarlas iterativamente sin tener que reconstruir continuamente.
La vinculación de paquetes es un proceso de dos pasos.
Primero, el enlace npm en una carpeta de paquete sin argumentos creará un enlace simbólico en la carpeta global {prefix}/lib/node_modules/ que enlaza con el paquete donde se ejecutó el comando npm link. También vinculará cualquier contenedor en el paquete a {prefix}/bin/{name}. Tenga en cuenta que el enlace npm usa el prefijo global (consulte el prefijo npm -g para conocer su valor).
A continuación, en alguna otra ubicación, npm link nombre-paquete creará un enlace simbólico desde nombre-paquete instalado globalmente a node_modules/ de la carpeta actual.
Por ejemplo:
cd ~/projects/node-redis # go into the package directory npm link # creates global link cd ~/projects/node-bloggy # go into some other package directory. npm link redis