Для настройки экземпляра редактора Monaco я хочу добавить файл типизации для пользовательской библиотеки. При монтировании редактора я вызываю:
public componentDidMount(): void {
languages.typescript.javascriptDefaults.addExtraLib(
typings,
);
}
Переменная typings
загружается:
// eslint-disable-next-line @typescript-eslint/no-var-requires
const typings = require("../../../modules/scripting/typings/my-runtime.d.ts");
Боковое примечание: необходим комментарий eslint, иначе он пометит require
вызов как сбой.
Я использую response-app-rewired, чтобы разрешить редактирование конфигурации моего веб-пакета без извлечения приложения на основе CRA. Теперь файл config-overrides. js содержит:
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');
module.exports = function override(config, env) {
config.plugins.push(new MonacoWebpackPlugin({
languages: ["typescript", "javascript", "mysql", "json", "markdown"]
}));
config.module.rules.push(
{
test: /\.(html|d\.ts)$/i,
use: [
{
loader: 'raw-loader',
options: {
esModule: false,
},
},
],
},
);
return config;
}
Как видите, я на самом деле обрабатываю здесь 2 типа файлов: html и d.ts. Часть html работает нормально. Вызов require для загрузки файла. html дает мне все содержимое файла html (мне нужно это, чтобы загрузить <iframe>
с моей настраиваемой средой выполнения).
Требуемый вызов для файла типизации, однако возвращает объект (вероятно, модуль, трудно сказать, поскольку он кажется пустым в отладчике в vscode).
Итак, вопрос: как изменить мою конфигурацию, чтобы загружать файлы типизации (.d.ts ) как текст?