#typescript #web #webpack
#typescript #web #webpack
Вопрос:
Я создал фреймворк под названием «tyframe» как monorepo, используя lerna. (https://github.com/tyframe/tyframe ) В настоящее время существует два пакета «core» и «example». Последний имеет отступ для демонстрации и работает, как ожидалось.
Теперь я хочу использовать пакет «@tyframe / core» в другом веб-проекте, но безуспешно.
Проблема:
Мой класс App наследует от класса AbstractApplication, но во время выполнения AbstractApplication не определено, и я получаю сообщение об ошибке «Прототип объекта может быть только Object или null: undefined».
Чтобы продемонстрировать проблему и сделать ее понятной, я создал минимальный пример на Stackblitz: https://stackblitz.com/edit/typescript-av2uka?devtoolsheight=33amp;file=index.ts
Есть ли что-нибудь еще, что следует учитывать при публикации моей платформы, чтобы я мог использовать ее в других веб-проектах?
Дополнительная информация:
Я использую webpack для создания своей платформы:
module.exports = {
mode: 'development',
devtool: 'inline-source-map',
module: {
rules: [
{
test: /.ts$/,
use: {
loader: 'ts-loader',
options: {
configFile: 'tsconfig.build.json',
}
},
exclude: /node_modules/,
},
],
},
resolve: {
extensions: [ '.ts', '.js' ],
},
};
В процессе компиляции ошибок не возникает.
У кого-нибудь есть идея?
Комментарии:
1. Я считаю, что вам нужно включить встроенные файлы в ваш опубликованный модуль (т.Е. В папку dist). Смотрите это руководство medium.com/cameron-nokes /…
2. Мой файл index.ts экспортирует все файлы основного пакета, а webpack создает мне index.js файл, который содержит весь код пакета. Файлы определений также создаются и публикуются. На мой взгляд, я выполнил все пункты инструкций.
Ответ №1:
Я нашел решение.
@mbdavis был прав! (См. Комментарий)
Я создал свой базовый пакет с помощью webpack, который скомпилировал все файлы в es5 и объединил их в один файл (index.js ). Но для каждого исходного файла должен существовать отдельный js-файл в папке dist .
Поэтому я изменил процесс сборки и напрямую использовал компилятор Typescript.
Я внес все необходимые изменения в следующий коммит: https://github.com/tyframe/tyframe/commit/c0820361fa23ceab9428c1a5c7def7a4d0faf1bc
Папка Dist для изменений:
Удалить папку после изменений: