Связывание пакета npm с локальным файлом определений typescript

Я использую пакет npm (скажем, foo), и во время разработки я хотел бы связать этот пакет с локальным (зафиксированным вместе с файлами проекта) файлом определений машинописного текста. Я явно не собираюсь публиковать файл определений в виде пакета npm, потому что на данный момент он неполный и охватывает только те части библиотеки, которые я действительно использую.

До сих пор я пробовал следующее:

Добавление следующего в tsconfig.json

"typeRoots": [
  "./node_modules/@types",
  "./src/types"
],

И добавил файл определения в ./src/types/foo/index.d.ts. Однако ни VSCode, ни загрузчик веб-пакетов typescript не могут связать импорт из «foo» с экспортом в файле определения.

Каков правильный подход к решению этой проблемы?


person lorefnon    schedule 25.12.2016    source источник


Ответы (2)


Примерно так я и сделал здесь

создал «мой тип» для существующей библиотеки, следуя инструкциям из @types
, и опубликовал его в «мой» Гитхаб. вместо публикации в @types

в конце концов

npm i git+https://github.com/my/repo.git

он окажется в node_modules/@types/chosen-name
именно там, где его ожидает tsc

Я не пробовал, но не вижу причин, по которым это не должно работать из других источников.

npm i ../myrepo
person Dan    schedule 25.12.2016
comment
из-за package.json... имя: @types/независимо - person Dan; 25.12.2016
comment
Да, я понял это вскоре после публикации моего комментария. Это прекрасно работает. - person lorefnon; 26.12.2016

Добавление ссылки на определение типа в разделе «файлы» файла tsconfig.json устраняет проблему:

{
    "compilerOptions": { ... },
    "files" : ["./src/types/foo.d.ts"]
}

Это решение, предложенное Дэном, тоже работает, но требует дополнительной работы - если кто-то намеревается в конечном итоге опубликовать определения, это идеальный подход. .

person lorefnon    schedule 26.12.2016