MI CONFIGURACIÓN DE TYPESCRIPT PARA BACKEND EN 2024

Поделиться
HTML-код
  • Опубликовано: 23 дек 2024

Комментарии • 1

  • @chrislo5202
    @chrislo5202  4 месяца назад

    ACLARACIÓN IMPORTANTE: Apartir de cierta versión de ECMA, las rutas de los imports deben contener SIEMPRE ".js" al final, no importa si están desarrollado directamente con Typescript, ya que el transpilador no les agregará las extensiones automaticamente, pues si tienen la siguiente importación en Typescript: `import algo from './carpeta/algo', pasará a Javascript como lo mismo, y esto NodeJS no lo reconoce (gran error mio no haber ejecutado el código transpilado).
    Para solucionar esto, en un curso de Express que sacaré mas adelante, creé un script que toma todos los archivos transpilados, y les agrega '.js' al final, por lo tanto, deben actualizar 'npm run build' a: 'rm -rf dist && tsc --project tsconfig.json && tsconfig-replace-paths --project tsconfig.json && node postTranspilation.js', y el archivo de compilación es (perdonar el código, no merece la pena un repositorio de git para esto):
    ```js
    import fs from "node:fs/promises";
    import path from "node:path";
    import { fileURLToPath } from "node:url";
    // Ruta de la carpeta ./dist
    const __filename = fileURLToPath(import.meta.url);
    const __dirname = path.dirname(__filename);
    const distDir = path.join(__dirname, "dist");
    // Contador de archivos modificados
    let modifiedFilesCount = 0;
    /**
    * Agregar la extensión .js a las importaciones en un archivo
    * ./sum -> ./sum.js
    * ./sum.js -> ./sum.js.js (Corregir)
    * express -> express
    */
    const addJsExtensionToImports = async (filePath) => {
    const fileContent = await fs.readFile(filePath, "utf-8");
    const updatedContent = fileContent.replace(
    /(import\s+.*?['"])(\.\/.*?)(?