为了设置 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
调用标记为失败。
我使用 react-app-rewired 允许在不弹出基于 CRA 的应用程序的情况下编辑我的 webpack 配置。现在 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 部分运行良好。加载 .html 文件的 require 调用为我提供了整个 html 文件内容(我需要它来加载<iframe>
我的自定义运行时)。
然而,对类型文件的 require 调用返回一个对象(可能是一个模块,很难说,因为它在 vscode 的调试器中显示为空)。
所以问题是:如何更改我的配置以使加载类型文件(.d.ts)作为文本成为可能?