Я пытаюсь импортировать внешний модуль в мой модуль машинописи. В среде веб-приложения уже есть загрузчик модулей и модуль «my-lib», который написан на JavaScript и не поставляется с файлом декларации.
Итак, я хочу потребовать эту библиотеку, но иметь объявление модуля локально (так как я единственный, кто в настоящее время использует TypeScript в этом контексте).
Я попытался задать путь поиска для файла декларации, используя typeRoots
в tsconfig.json
. Это сработало для /// <reference types="my-lib" />
, но не для import "my-lib";
. Только если я помещу папку @types
в папку node_modules
, разрешение модуля найдет и импортирует ее.
Есть ли способ настроить его так, чтобы мне не нужно было помещать @types
в папку node_modules
?
tsconfig.json:
{
"compilerOptions": {
"esModuleInterop": true,
"typeRoots": [
"./@types"
]
},
"include": [
"src/**/*"
]
}
@types/my-lib/index.d.ts:
interface MyLib {
...
}
declare const myLib: MyLib;
export = myLib;
SRC / entry.ts:
import myLib from "my-lib";
...
webpack.config.js:
...
externals: {
"my-lib": "my-lib"
},
...