Javascript 使用TypeScript仅加载highlight.js库,而不是加载所有语言时的默认值

Javascript 使用TypeScript仅加载highlight.js库,而不是加载所有语言时的默认值,javascript,typescript,highlight.js,Javascript,Typescript,Highlight.js,正如官方highlight.js建议的那样: 默认导入导入所有语言!因此,仅导入所需的库和语言可能更有效: 我正试图加载highlight.js库以及各个语言模块,以减少我的TS应用程序占用的空间 使用@types/highlight.js声明文件,导入highlight.js的唯一方法(我可以找到)如下所示: import * as hljs from 'highlight.js/lib/highlight.js'; import * xml from 'highlight.js/lib/la

正如官方highlight.js建议的那样:

默认导入导入所有语言!因此,仅导入所需的库和语言可能更有效:

我正试图加载
highlight.js
库以及各个语言模块,以减少我的TS应用程序占用的空间

使用
@types/highlight.js
声明文件,导入highlight.js的唯一方法(我可以找到)如下所示:

import * as hljs from 'highlight.js/lib/highlight.js';
import * xml from 'highlight.js/lib/languages/xml';
...
hljs.registerLanguage('xml', xml);
import*作为hljs从'highlight.js'导入

不幸的是,这将加载默认导出,该导出已加载所有附带的语言

查看highlight.js模块,我想做如下操作:

import * as hljs from 'highlight.js/lib/highlight.js';
import * xml from 'highlight.js/lib/languages/xml';
...
hljs.registerLanguage('xml', xml);
因此,我只得到库本身,以及我需要的唯一语言(xml)

到目前为止,我已经能够在.d.ts文件中添加这些行,以使TypeScript不抱怨这些导入:

declare module 'highlight.js/lib/highlight';
declare module 'highlight.js/lib/language/xml';
但当然,这意味着在导入
hljs
时,我会丢失我的内容辅助功能。我可以将
@types/highlight.js
的内容复制到我自己的.d.ts文件中,但我确实希望避免这种情况

有没有办法将声明从
@types/highlight.js
代理到模块
highlight.js/lib/highlight'
?或者是我错过的其他方法


提前感谢。

我通过创建一个Javascript文件解决了这个问题,该文件只需要我需要的语言:

myhighlight.js

var hljs=require('../../../node_modules/highlight.js/lib/highlight');
registerLanguage('typescript',require('../../../node_modules/highlight.js/lib/languages/typescript');
registerLanguage('json',require('../../../node_modules/highlight.js/lib/languages/json');
module.exports=hljs;
通过在我的Typescript代码中导入此文件:

从“/myhighlight”导入hljs;
导出类SomeClass{
突出显示(代码:字符串){
返回hljs.highlightAuto(code).value;
}
}