我使用SystemJS
构建Angular 2
应用程序,我想在组件中开始使用MathJax
。我安装了:
npm install --save-dev mathjax
npm install --save @types/mathjax
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
正确的路径是
/node_modules/mathjax/extensions/MathMenu.js
/node_modules/mathjax/extensions/MathZoom.js
快速查看源文件,可以看到这些URL的引用方式:
[MathJax]/extensions/MathMenu.js
我知道应该在哪里解决这个问题?我知道我不应该更改MathJax.js
文件本身,因为任何更改都会在更新后被覆盖。使用htaccess
或其他服务器端重定向也没有意义。
我知道我可以使用CDN加载一个有效的MathJax包:
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=AM_SVG"></script>
但是我正在尝试学习如何将库集成到我的构建设置中。
答案 0 :(得分:5)
简单地说,你不能像这样集成MathJax(此时)。
MathJax包含一个自定义动态模块加载器,旨在一直工作到IE6;毫不奇怪,它不适用于当代构建工具。
但很可能你也不希望完整整合MathJax,因为它有几十兆字节(压缩)。现在,在实践中,您不需要所有组件,通常开发人员需要1个输入+ 1个输出+ 1组字体,大约约500-600KB(压缩)。
如果这是一个可行的工资负担,那么您可以考虑构建一个您应该能够集成的自定义单文件版本(例如this one)。
对于它的价值,与当代构建工具的兼容性是明年MathJax v3.0的可交付成果。
完全披露:我是MathJax团队的一员。