Skip to content

Пробросить index.d.ts через exports (условие types) для moduleResolution bundler/node16 #2

Description

@EgorGruzdev

Проблема

Пакет уже поставляет index.d.ts, и в package.json есть "types": "./index.d.ts" — но при наличии "exports" современный TypeScript (moduleResolution: bundler / node16 / nodenext) резолвит типы только через условие types внутри exports и игнорирует верхнеуровневое поле types.

Сейчас в exports["."] только import/require:

"exports": {
  ".": {
    "import": "./dist/vue-select.js",
    "require": "./dist/vue-select.umd.cjs"
  },
  "./style.css": "./dist/vue-select.css"
}

Поэтому типы не находятся — редактор выдаёт TS7016, и потребителям приходится держать declare module "@ttbooking/vue-select"; (тип any), теряя реальный API (SelectOption, VueSelectProps и т.д.), хотя декларации в пакете лежат.

Просьба

Добавить условие types первым в exports["."]:

"exports": {
  ".": {
    "types": "./index.d.ts",
    "import": "./dist/vue-select.js",
    "require": "./dist/vue-select.umd.cjs"
  },
  "./style.css": "./dist/vue-select.css"
}

(types обязательно первым условием — TS берёт первое подходящее.) Патч-релиз; менять код не нужно, только package.json.

После этого потребители смогут убрать локальный shim и получить настоящие типы.


Затрагивает 1.0.7 (последняя на момент issue).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions