es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Las importaciones desde un paquete compartido de lerna parecen requerir src al final del nombre (Typescript/javascript)

Tengo un proyecto simple de Lerna como este:

Proyecto
|
+– paquetes
| |
| +– compartido
| | |
| | +– src
| | |
| | +– index.ts
| | +– someDir
| |
| +– usaCompartido
|
+

Mi index.ts tiene entradas como esta:

export * from "./someDir";

Cuando importo una clase desde someDir en una clase “usaCompartido”, tengo que poner /src al final de la importación, así:

import {GreatClass} from “myShared/src”;

Soy nuevo en TypeScript, JavaScript y Lerna, pero esto me parece incorrecto. Parece que debería ser así:

import {GreatClass} from “myShared”;

¿Alguien puede indicarme cómo solucionar esto? ¿Tiene algo que ver con Lerna o me falta algo en package.json?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema es probablemente causado por el hecho de que tu compilador de TypeScript está configurado para resolver las rutas de los módulos en relación al directorio “packages/shared”, en lugar de la raíz de tu proyecto.

    Para solucionar esto, puedes actualizar tu archivo “tsconfig.json” en el paquete “usesShared” para incluir una propiedad “baseUrl” que apunte a la raíz de tu proyecto:

    {
      "compilerOptions": {
        "baseUrl": "..",
        "paths": {
          "*": ["node_modules/*", "packages/*/*/src/*"]
        }
      }
    }
    

    Esto debería permitirte importar clases desde el paquete “shared” sin tener que incluir el sufijo “/src”:

    import { GreatClass } from "myShared";
    

    Ten en cuenta que también debes actualizar la propiedad “paths” para incluir cualquier ruta de paquete adicional que quieras resolver. Este ejemplo asume que todos los paquetes tienen un subdirectorio “src”.

    Esto no está directamente relacionado con Lerna, sino más bien una configuración común para proyectos de TypeScript que utilizan varios paquetes/módulos.

Comments are closed.