Javascript 使用TypeScript仅加载highlight.js库,而不是加载所有语言时的默认值
正如官方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
库以及各个语言模块,以减少我的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;
}
}