Импорт внешнего пакета webpack в TypeScript с локальным файлом декларации - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь импортировать внешний модуль в мой модуль машинописи. В среде веб-приложения уже есть загрузчик модулей и модуль «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"
},
...

1 Ответ

0 голосов
/ 06 июля 2018

Я сделал это со следующим tsconfig.json (только что пришло мне в голову):

{
    "compilerOptions": {
        "esModuleInterop": true,
        "typeRoots": [
            "./@types"
        ],
        "baseUrl": ".",
        "paths": {
            "*": [
                "*",
                "@types/*"
            ]
        }
    },
    "include": [
        "src/**/*",
        "@types/**/*"
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...