将MathJax集成到SystemJS构建中

Bee*_*ice 3 build mathjax systemjs angular

SystemJS用来构建一个Angular 2应用程序,我想开始MathJax在组件中使用.我安装了:

npm install --save-dev mathjax
npm install --save @types/mathjax
Run Code Online (Sandbox Code Playgroud)

MathJax现已安装在/node_modules/mathjax.当我的组件执行时import "mathjax",文件/node_modules/mathjax/MathJax.js已加载.到现在为止还挺好.

问题是该文件然后尝试使用相对于项目根目录而不是MathJax安装目录的路径加载其他文件.

例如,MathJax.js尝试加载

/extensions/MathMenu.js  404 Not found
/extensions/MathZoom.js  404 Not found 
Run Code Online (Sandbox Code Playgroud)

正确的路径是

/node_modules/mathjax/extensions/MathMenu.js
/node_modules/mathjax/extensions/MathZoom.js
Run Code Online (Sandbox Code Playgroud)

快速查看源文件内部显示URL是这样引用的:

[MathJax]/extensions/MathMenu.js
Run Code Online (Sandbox Code Playgroud)

知道我应该在哪里解决这个问题吗?我知道我不应该更改MathJax.js文件本身,因为更新后将覆盖任何更改.使用htaccess或其他服务器端重定向也没有意义.

我知道我可以使用CDN加载一个有效的MathJax包:

<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=AM_SVG"></script>
Run Code Online (Sandbox Code Playgroud)

但是我正在尝试学习如何将库集成到我的构建设置中.

Pet*_*ger 5

简单地说,你不能像这样整合MathJax(此时).

MathJax包含一个自定义动态模块加载器,旨在一直工作到IE6; 不出所料,它不适用于当代构建工具.

但很可能你也不想完全整合MathJax,因为它有几十兆字节(压缩).现在,在实践中,您不需要所有组件,通常开发人员需要1个输入+ 1个输出+ 1组字体,大约约500-600KB(压缩).

如果这是一个可行的工资负载,那么您可以考虑构建一个您应该能够集成的自定义单文件构建(例如这个).

对于它的价值,与当代构建工具的兼容性是明年MathJax v3.0的可交付成果.

完全披露:我是MathJax团队的一员.