Digamos que tengo un paquete llamado dog y exporta algunas funciones definidas en index.js . El archivo index.js se guarda dentro de un directorio src . Así es como se ve el árbol:
--> dog --> src --> index.js La importación de una función desde el paquete dog se vería así: import { eat } from '@dog'
Ahora me gustaría crear un "subpaquete" (llamado puppy ) del paquete del dog . Quiero que la importación se vea así:
import { whimper } from '@dog/puppy'` Me pregunto cómo estructurar el paquete del dog para poder importar el paquete del puppy de la manera que se muestra arriba. He intentado un par de maneras diferentes sin mucho éxito. Aquí hay algunos ejemplos de lo que probé:
Intento 1:
--> dog --> puppy --> index.js --> src --> index.jsIntento 2:
--> dog --> src --> puppy --> index.js --> index.js Esto da como resultado un error sobre la imposibilidad de resolver @dog/puppy al intentar importar funciones desde el módulo.
Solo para su información, no estoy tan familiarizado con la creación de paquetes. Ni siquiera entiendo cómo funciona la import { eat } from @dog sin especificar la ruta completa para eat (perro/src/index.js).
Creo que he encontrado una solución a mi pregunta.
De hecho, puedo utilizar la estructura de directorio "Intento 1" anterior:
--> dog --> puppy --> index.js --> src --> index.js La parte que me faltaba era cambiar el comando que estaba usando para ejecutar el módulo para dog localmente. Estoy usando chokidar y yalc para ver/publicar los cambios realizados en el módulo de dog , y necesitaba modificar el comando para incluir los cambios realizados en el directorio de puppy . Antes de esto, creo que el código del puppy esencialmente se ignoraba y, por lo tanto, yalc no lo publicaba. Entonces, el código que quería importar las funciones del puppy no pudo encontrarlo.