Tengo la siguiente estructura de directorios para una biblioteca que será importada por otro proyecto de nodo js.
my-lib/ ├─ dist/ │ ├─ index.js │ ├─ foo.js ├─ src/ │ ├─ index.ts │ ├─ foo.ts ├─ package.jsonTengo el siguiente paquete.json
{ "name": "my-lib", "version": "1.0.0", "description": "", "main": "dist/index.js" } He especificado main como dist/index.js , por lo que si entiendo correctamente, los miembros exportados desde index.ts (js) se pueden importar como import abc from 'my-lib' . Si tengo que acceder a miembros exportados desde el archivo foo.ts (js), entonces podría terminar import foo from 'my-lib/dist/foo' . Así que aquí tengo que especificar el nombre de la carpeta dist en la ruta de importación. ¿Hay alguna forma de especificar solo 'my-lib/foo' omitiendo el nombre de la carpeta dist ? (Al igual que importar el archivo dist/index.js ).
Esto se puede lograr con exportaciones de rutas secundarias en package.json.
"main": "./dist/index.js", "exports": { ".": "./dist/index.js", "./foo": "./dist/foo.js" }Como se explica en la documentación de node.js, es posible agregar exportaciones de rutas secundarias. Compruébalo aquí .
En su caso, debería ser similar a lo siguiente
{ "name": "my-lib", "version": "1.0.0", "description": "", "main": "./dist/index.js", "exports": { ".": "./dist/index.js", "./foo": "./dist/foo.js" } }Después de exportar así, puede importar de la siguiente manera
import foo from 'my-lib/foo'