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

标签 javascript typescript highlight.js

作为官方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/

相关文章:

javascript - typescript :从方法参数中调用方法

javascript - 为什么 UseBR 在highlight.js 中不起作用

html - CKEditor Codesnippet 的背景没有滚动超过 <div> 长度

javascript - 在继续之前等待函数执行

javascript - 在 Javascript 中测试 Int 值(正则表达式)

javascript - Ajax 请求仅在第一次有效,在加载部分页面后不再有效

reactjs - react npm 开始不工作 : 'No version of chokidar available'

javascript - 显示第一项jquery

node.js - 通过 TS 使用路径映射调试 Nest App

html - highlight.js 和 Bootstrap 的问题