Файл объявления Typescript, созданный с псевдонимом вместо относительного пути - PullRequest
0 голосов
/ 25 сентября 2018

Редактировать 1: добавлен GitHub URL в проект

Редактировать 2: удаление baseUrl из tsconfig.json исправляет все проблемы, и использование относительного импорта работает нормально.

Ссылка: Github

Как создать файл объявления машинописного текста с относительными путями вместо alias?

Я создаю библиотеку (samplelibrary) в режиме UMD и публикую ее в npm.В упакованной библиотеке npm есть только папка build (с типами), package.json и README.md

. Когда я пытаюсь использовать библиотеку в другом приложении для машинописи, сборка завершается неудачно из-за неверного файла объявления типа, которыйгенерируется.Файл объявления типа содержит псевдоним вместо относительного пути.

Журнал компиляции:

ERROR in /workspace/myproject/node_modules/samplelibrary/build/typings/src/foo.d.ts(403,17): TS2307: Cannot find module 'utils/bar

Как решить эту проблему?

Фактически созданный файл объявления foo.d.ts:

declare const Foo: {
   bar: typeof import("utils/bar");
}

Ожидаемый файл:

declare const Foo: {
   bar: typeof import("./utils/bar");
}

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "esnext",
    "moduleResolution": "node",
    "jsx": "react",
    "sourceMap": true,
    "rootDir": "./",
    "baseUrl": "./src",
    "paths": {
      "@samplecompany/sampleproject": ["./"]
    },
    "outDir": "build",
    "removeComments": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "strictNullChecks": true,
    "declaration": true,
    "declarationDir": "typings",
    "importHelpers": true
  },
  "files": ["types/untyped-modules.d.ts"],
  "include": [
    "src/**/*",
    "test/**/*",
    "build/**/*",
    "styleguide-renderer/**/*"
  ],
  "exclude": ["node_modules"]
}

Структура папки:

root
  -src
    -utils
       -bar.ts
    -foo.ts

utils / bar.ts

export const bar = {
   hello: "World"
}

src / foo.ts

import { bar } from "./utils/bar.ts

export default const Foo = {
    bar
};

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Чтобы решить эту проблему,

  • Удалите использование baseUrl из конфигурации с машинописью.
  • Используйте только относительный импорт в вашем проекте, например ../somefile, ./somefolder/file и т. Д..,

Исправлено здесь

0 голосов
/ 25 сентября 2018

Вам не повезло: TypeScript не переписывает пути импорта.См. это отклоненное предложение .Вам нужно будет воздерживаться от использования псевдонимов в вашей библиотеке, если вы не сконфигурируете псевдонимы и в потребляющем проекте.

...