#typescript #webpack #definitelytyped #umd
#typescript #webpack #definitelytyped #umd
Вопрос:
Я работаю над библиотекой surveyjs
Для сборки пакета umd используется gulp webpack.
Я хочу создать пакет определения типа (или может быть просто несколько файлов d.ts) для использования в проектах typescript. Я хотел бы иметь что-то подобное:
import * as Survey from 'surveyjs';
Все содержимое для опроса.* описано здесь:
https://github.com/dmitrykurmanov/surveyjs/blob/master/src/entries/ko.ts
Я пытался использовать:github.com/SitePen/dts-generator и github.com/TypeStrong/dts-bundle но без успеха, не мог бы кто-нибудь, пожалуйста, показать мне правильное направление?
Комментарии:
1. хм.. вы также можете настроить tsc в tscconfig.json для вывода объявлений, используя флаг declaration .
2. Наконец-то мы реализовали это с помощью dts-bundle
Ответ №1:
Вы можете попросить tsc сгенерировать файлы объявлений для вашего кода, добавив флаг объявления в tsconfig.json.
В вашем случае это было бы:
{
"compilerOptions": {
"target": "es5",
"module": "es2015",
"sourceMap": true,
"noImplicitAny": false,
"jsx": "react",
"declaration": true
},
// "filesGlob": [
// "typings/index.d.ts"
// ], // TODO
"include": [
"typings/index.d.ts",
"src/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
Комментарии:
1. Да, это так. Проблема в потоковом выводе webpack. Это всего лишь js bundle, но как я могу получить d.ts? Итак, я запускаю компилятор ‘gulp-typescript’ отдельно и генерирую d.ts. Это не круто.
2. это действительно во многом зависит от ваших настроек .. если вы хотите получить более конкретный ответ, вам следует поделиться им подробнее.
3. И еще одна проблема — bundle.d.ts. Возможно ли это создать? Я нашел два проекта github.com/TypeStrong/dts-bundle и github.com/SitePen/dts-generator Мне не удалось их настроить. У кого-нибудь есть примеры успеха?
4. @tokv, хорошо, я создам другие вопросы о webpack-stream и bundle.d.ts
Ответ №2:
Как упоминал toskv, вы можете использовать tsc для создания файлов .d.ts. Проблема заключается в том, что компилятор создает несколько файлов объявлений, по одному для каждого вашего файла .ts. У меня была такая же проблема с другим проектом, над которым я работал. Я сделал это, создав небольшой плагин для webpack, который объединяет файлы .d.ts, созданные tsc.
Вы можете ознакомиться с ним здесь:https://www.npmjs.com/package/typescript-declaration-webpack-plugin