Я не могу найти способ генерировать файлы d.ts и d.ts.map с помощью webpack. babel-loader генерирует только файлы js и js.map. Мне также нужны файлы d.ts и d.ts.map (которые я смог сгенерировать с помощью команды tsc), как показано на этом рисунке:
Вот минимальное репо, содержащее все настройки: https://github.com/stavalfi/lerna-yarn-workspaces-пример
Я перешла на Lerna + пряжа. Один из моих пакетов — core (будет использоваться в других пакетах), написанный на TS и JS.
Я использую webpack 4, babel-loader 8 для ts-to-js.
Другие пакеты пытаются найти определения типов и реализацию моего пакета core, но я смог сгенерировать только index.js и index.js.map с помощью веб-пакета:
output: {
path: distPath,
filename: 'index.js',
},
{
"extends": "../tsconfig.settings.json",
"compilerOptions": {
"declaration": true,
"declarationMap": true,
"declarationDir": "dist",
"rootDir": "src",
"outDir": "dist"
}
}
tsc (без веб-пакета), все отлично работает, как показано на картинке выше.Моя стратегия неверна? Что я должен делать?
Я пробовал много плагинов, которые генерируют файлы d.ts, но они не работают и не создают файлы d.ts.map.
Я уже пробовал: typescript-declaration-webpack-plugin, npm-dts-webpack-plugin, dts-bundle-webpack, @ahrakio/witty-webpack-declaration-files. (Они перечислены в package.json core, так что вы можете клонировать и играть с ними).
Вы правильно поняли. Я не хочу переходить на ts-loader, потому что мне нужен Babel для всего кода пакетов. Я также отредактировал вопрос, чтобы сделать его более понятным.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете вызвать компилятор Typescript tsc напрямую, чтобы сделать это.
Используйте tsc --declaration для вывода файла .d.ts и tsc --declarationMap для создания соответствующего файла карты.
Вы можете найти больше документации здесь: https://www.typescriptlang.org/docs/handbook/compiler-options.html
Я хочу создать дем из веб-пакета, иначе мне нужно будет скомпилировать все дважды...
Я понимаю. Я не могу помочь вам в этом конкретном.
Став, давай дальше, я пытаюсь отправить тебе сообщение.
@ShanonJackson Я пропинговал тебя.
Эх, если Babel на самом деле не компилирует ts из соображений скорости, я бы не стал рассматривать эту компиляцию дважды
Существует также «tsc --emitDeclarationOnly».
Привет, можно ли сгенерировать только .d.ts.map? Я использую Tsup, который уже порождает .d.ts, но еще не .d.ts.map.
Бег ts-loader до babel-loader поможет.
Все, что вам нужно, это указать, что вам нужны файлы объявлений в конфигурации.
Если вы используете абсолютный путь, выходные файлы d.ts также будут содержать абсолютные пути, которые бесполезны и приведут к ошибкам компиляции машинописного текста.
Чтобы исправить это, я написал плагин для преобразования абсолютного пути в относительный: https://github.com/stavalfi/babel-plugin-module-resolver-loader
аааааааааааааааааааа я уже 2 дня над этим голову ломаю. Наконец добавление ts-loader сработало. Спасибо за это.
Вместо установки другого загрузчика (ts-loader) вы также можете добавить 'tsc' в конце команды сборки, но вы настроили свой ts.config, чтобы он выдавал только объявление типов, как показано здесь typescriptlang.org/docs/handbook/babel-with-typescript.html
Насколько я понимаю (прочитано около 10 минут), babel на самом деле не компилирует ваш tsc, он просто удаляет все это в простой js? Значит, он никак не выдаст вам определения типов? Похоже, вам нужно, чтобы веб-пакет использовал ts-loader или что-то в этом роде, а затем выплевывал ваши js-файлы для включения в babel. (надеюсь, кто-то более знакомый сможет ответить на ваш вопрос с большей уверенностью!)