gpt4 book ai didi

javascript - 使用 TypeScript 仅加载 highlight.js 库,而不是默认加载所有语言

转载 作者:行者123 更新时间:2023-12-01 15:28:20 25 4
gpt4 key购买 nike

作为官方highlight.js usage document建议:

The default import imports all languages! Therefore it is likely to be more efficient to import only the library and the languages you need:


import hljs from 'highlight.js/lib/highlight';
import javascript from 'highlight.js/lib/languages/javascript';
hljs.registerLanguage('javascript', javascript);

我正在尝试仅加载 highlight.js库,以及单独的语言模块,以减少我对我的 TS 应用程序的占用。

使用 @types/highlight.js声明文件,导入 highlight.js 的唯一方法(我能找到)是这样的:
import * as hljs from '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');
hljs.registerLanguage('typescript', require('../../../node_modules/highlight.js/lib/languages/typescript'));
hljs.registerLanguage('json', require('../../../node_modules/highlight.js/lib/languages/json'));
module.exports = hljs;

通过在我的 Typescript 代码中导入这个文件:

import hljs from './myhighlight';

export class SomeClass {
highlight(code: string) {
return hljs.highlightAuto(code).value;
}
}

关于javascript - 使用 TypeScript 仅加载 highlight.js 库,而不是默认加载所有语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54334893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com