将 MathJax 集成到 SystemJS 构建中
Integrate MathJax into SystemJS build
我使用 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>
但是我正在尝试学习如何将库集成到我的构建设置中。
简单地说,你不能像这样(此时)集成MathJax。
MathJax 包含一个自定义动态模块加载器,旨在一直工作到 IE6;毫不奇怪,它不适用于现代构建工具。
但很可能您也不希望完整集成 MathJax,因为它有几十兆字节(压缩)。现在,在实践中,您不需要所有组件,通常开发人员需要 1 个输入 + 1 个输出 + 1 组字体,大约 ~500-600KB(压缩)。
如果这是一个可行的有效负载,那么您可以考虑构建一个您应该能够集成的自定义单文件构建(例如 this one)。
就其价值而言,与现代构建工具的兼容性是明年 MathJax v3.0 的可交付成果。
完全披露:我是 MathJax 团队的一员。
我使用 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>
但是我正在尝试学习如何将库集成到我的构建设置中。
简单地说,你不能像这样(此时)集成MathJax。
MathJax 包含一个自定义动态模块加载器,旨在一直工作到 IE6;毫不奇怪,它不适用于现代构建工具。
但很可能您也不希望完整集成 MathJax,因为它有几十兆字节(压缩)。现在,在实践中,您不需要所有组件,通常开发人员需要 1 个输入 + 1 个输出 + 1 组字体,大约 ~500-600KB(压缩)。
如果这是一个可行的有效负载,那么您可以考虑构建一个您应该能够集成的自定义单文件构建(例如 this one)。
就其价值而言,与现代构建工具的兼容性是明年 MathJax v3.0 的可交付成果。
完全披露:我是 MathJax 团队的一员。