tsc - не компилирует псевдонимы путей

У меня есть машинописный текст, и я использую псевдонимы. Вот часть tsconfig.json

"compilerOptions": {
  "baseUrl": "./src",
   ...
},

Установив базовый URL, я могу изменить

import User from "src/models/User.model.ts"

to

import User from "models/User.model.ts"

Проблема в том, что tsc компилирует папку src в папку dist, поэтому путь импорта пользователя следует изменить на относительный путь примерно так:

"../models/User.model.js"

Но это не меняется, поэтому я получаю следующую ошибку:

"models/User.model.js" not found

Я искал ответ, но безуспешно.


person ahadortiz    schedule 04.12.2019    source источник


Ответы (2)


В вопросах машинописного текста по этому поводу идет длинная дискуссия, и я не могу найти лучшего решения, чем это.

Разработка

npm i -save-dev tsconfig-paths/register

tsconfig.json

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

package.json

"scripts": {
  dev: "ts-node -r tsconfig-paths/register src/index.ts"
}

Сборка

npm i -save-d ttypescript @zerollup/ts-transform-paths

tsconfig.json

{
 "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@src/*": ["src/*"],
    },   
  }
 "plugins": [
      {
          "transform": "@zerollup/ts-transform-paths",
      }
  ],
}

package.json

"scripts": {
  build: "ttsc -P ./tsconfig.json"
}
person Jethro91    schedule 12.03.2021

ttypescript

typescript-transform-paths

babel-plugin-module-resolver

package.json часть

"build": "ttsc && babel dist -d dist",

ttsc это не ошибка, это надстройка над конфигурацией машинописного текста для более сложной трансляции.

tsconfig.json часть

"outDir": "dist",
"baseUrl": "./",
"paths": {
    "@/*": [
        "./src/*"
    ],
    "$/*": [
        "./tests/unit/*"
    ]
},
"plugins": [
    {
        "transform": "typescript-transform-paths",
        "afterDeclarations": true
    }
],

.babelrc весь контент

{
  "compact": false,
  "retainLines": true,
  "minified": false,
  "inputSourceMap": false,
  "sourceMaps": false,
  "plugins": [
    [
      "module-resolver",
      {
        "root": ["./dist"],
        "alias": {
          "@": "./dist"
        }
      }
    ]
  ]
}

person MarcusRise    schedule 18.12.2019
comment
Объясните, для чего нужны эти репозитории? - person Gander; 18.12.2019
comment
Думаю, вам помогут файлы README этих репозиториев) - person MarcusRise; 18.12.2019
comment
Похоже, все будет отлично! К сожалению, typescript-transform-paths не работает в TS 4.0: github.com/LeDDGroup/typescript -transform-paths / issues / 68 - person AverageHelper; 12.09.2020
comment
Лучшая альтернатива, которую я нашел до сих пор, - это: github.com/joonhocho/tscpaths - person AverageHelper; 12.09.2020
comment
@SeizeTheDay поддержка TS 4+ появилась через неделю после вашего комментария ???? - person Nikolay Shebanov; 01.03.2021