commit f7d426c155859b22c2bafc740f95d66227f36b5f
parent d4ab1b35c96dd964eaa9e1ed2c86e39fffbdacf6
Author: Georges Dupéron <georges.duperon@gmail.com>
Date: Mon, 8 Aug 2016 00:32:16 +0200
Merge branch 'MathJax-grunt-cleaner' into v2.6-latest
Diffstat:
| M | .gitignore | | | 2 | ++ |
| A | Gruntfile.js | | | 419 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 421 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -4,3 +4,4 @@ config/local/*.js
!config/local/local.js
unpacked/config/local/*.js
!unpacked/config/local/local.js
+node_modules
+\ No newline at end of file
diff --git a/Gruntfile.js b/Gruntfile.js
@@ -0,0 +1,419 @@
+/*
+MathJax-grunt-cleaner
+=====================
+A grunt file to reduce the footprint of a MathJax installation
+
+Latest version at https://github.com/pkra/MathJax-grunt-cleaner
+
+Copyright (c) 2014 Mathjax Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+module.exports = function(grunt) {
+ "use strict";
+ // # Notes #
+ // NEVER remove:
+ //
+ // * LICENSE -- the Apache license.
+ // * jax/element/mml -- this implements MathJax"s internal format. Keep either the packed or unpacked copy.
+ //
+
+ grunt.initConfig({
+ pkg: grunt.file.readJSON("package.json"),
+ clean: {
+ //
+ // ## Early choices
+ // `unpacked` for development
+ // ``packed` for production
+ unpacked: [
+ "unpacked"
+ ],
+ packed: [
+ "config",
+ "docs",
+ "extensions",
+ "jax",
+ "localization",
+ "MathJax.js"
+ ],
+ // If you don"t need combined configuration files or want to build your own:
+ allConfigs: [
+ "config",
+ "unpacked/config"
+ ],
+ //
+ // ## Choosing a font
+ // See http://docs.mathjax.org/en/latest/font-support.html#font-configuration for background information
+ //
+ // 1. Remove font files and font data for fonts you won"t use.
+ // **IMPORTANT.** Make sure to prevent fallbacks and local fonts in your configuration!
+ //
+ //
+ fontAsana: [
+ "fonts/HTML-CSS/Asana-Math",
+ "jax/output/HTML-CSS/fonts/Asana-Math",
+ "unpacked/jax/output/HTML-CSS/fonts/Asana-Math",
+ "jax/output/SVG/fonts/Asana-Math",
+ "unpacked/jax/output/SVG/fonts/Asana-Math"
+ ],
+ fontGyrePagella: [
+ "fonts/HTML-CSS/Gyre-Pagella",
+ "jax/output/HTML-CSS/fonts/Gyre-Pagella",
+ "unpacked/jax/output/HTML-CSS/fonts/Gyre-Pagella",
+ "jax/output/SVG/fonts/Gyre-Pagella",
+ "unpacked/jax/output/SVG/fonts/Gyre-Pagella"
+ ],
+ fontGyreTermes: [
+ "fonts/HTML-CSS/Gyre-Termes",
+ "jax/output/HTML-CSS/fonts/Gyre-Termes",
+ "unpacked/jax/output/HTML-CSS/fonts/Gyre-Termes",
+ "jax/output/SVG/fonts/Gyre-Termes",
+ "unpacked/jax/output/SVG/fonts/Gyre-Termes"
+ ],
+ fontLatinModern: [
+ "fonts/HTML-CSS/Latin-Modern",
+ "jax/output/HTML-CSS/fonts/Latin-Modern",
+ "unpacked/jax/output/HTML-CSS/fonts/Latin-Modern",
+ "jax/output/SVG/fonts/Latin-Modern",
+ "unpacked/jax/output/SVG/fonts/Latin-Modern"
+ ],
+ fontNeoEuler: [
+ "fonts/HTML-CSS/Neo-Euler",
+ "jax/output/HTML-CSS/fonts/Neo-Euler",
+ "unpacked/jax/output/HTML-CSS/fonts/Neo-Euler",
+ "jax/output/SVG/fonts/Neo-Euler",
+ "unpacked/jax/output/SVG/fonts/Neo-Euler"
+ ],
+ fontStix: [
+ "fonts/HTML-CSS/STIX",
+ "jax/output/HTML-CSS/fonts/STIX",
+ "unpacked/jax/output/HTML-CSS/fonts/STIX",
+ "jax/output/SVG/fonts/STIX",
+ "unpacked/jax/output/SVG/fonts/STIX"
+ ],
+ fontStixWeb: [
+ "fonts/HTML-CSS/STIX-Web",
+ "jax/output/HTML-CSS/fonts/STIX-Web",
+ "unpacked/jax/output/HTML-CSS/fonts/STIX-Web",
+ "jax/output/SVG/fonts/STIX-Web",
+ "unpacked/jax/output/SVG/fonts/STIX-Web"
+ ],
+ fontTeX: [
+ "fonts/HTML-CSS/TeX",
+ "jax/output/HTML-CSS/fonts/TeX",
+ "unpacked/jax/output/HTML-CSS/fonts/TeX",
+ "jax/output/SVG/fonts/TeX",
+ "unpacked/jax/output/SVG/fonts/TeX"
+ ],
+ //
+ // Remove font formats
+ // If you know you only need a specific format of your remaining fonts (e.g., woff), then you can delete the others.
+ dropFonts: [ // if you use SVG output, you can drop all font formats (SVG output uses the data in `jax/output/SVG/fonts/...`)
+ "fonts"
+ ],
+ eot: [
+ "fonts/**/eot"
+ ],
+ otf: [
+ "fonts/**/otf"
+ ],
+ png: [
+ "fonts/**/png"
+ ],
+ svg: [ // **NOT** related to the SVG output!
+ "fonts/**/svg"
+ ],
+ woff: [
+ "fonts/**/woff"
+ ],
+ // ## Choose the input
+ // Remove input that you don"t need.
+ // **Note.** This includes combined configuration files.
+ asciimathInput: [
+ "config/AM*",
+ "config/TeX-MML-AM*",
+ "jax/input/AsciiMath",
+ "unpacked/config/AM*",
+ "unpacked/config/TeX-MML-AM*",
+ "unpacked/jax/input/AsciiMath"
+ ],
+ mathmlInput: [
+ "config/MML*",
+ "config/TeX-MML*",
+ "config/TeX-AMS-MML*",
+ "jax/input/MathML",
+ "unpacked/config/MathML*",
+ "unpacked/jax/input/MathML"
+ ],
+ texInput: [
+ "config/TeX*",
+ "jax/input/TeX",
+ "unpacked/config/TeX*",
+ "unpacked/jax/input/TeX"
+ ],
+ // ## Extensions
+ extensionsAsciimath: [
+ "extensions/asciimath2jax.js",
+ "unpacked/extensions/asciimath2jax.js"
+ ],
+ extensionsMathml: [
+ "extensions/MathML",
+ "extensions/mml2jax.js",
+ "unpacked/extensions/MathML",
+ "unpacked/extensions/mml2jax.js"
+ ],
+ extensionsTeX: [
+ "extensions/TeX",
+ "extensions/jsMath2jax.js",
+ "extensions/tex2jax.js",
+ "unpacked/extensions/TeX",
+ "unpacked/extensions/jsMath2jax.js",
+ "unpacked/extensions/tex2jax.js"
+ ],
+ extensionHtmlCss: [
+ "extensions/HTML-CSS",
+ "unpacked/extensions/HTML-CSS"
+ ],
+ // ## Choose Output
+ htmlCssOutput: [
+ "config/*HTMLorMML.js",
+ "config/*HTMLorMML-full.js",
+ "unpacked/config/*HTMLorMML.js",
+ "unpacked/config/*HTMLorMML-full.js",
+ "jax/output/HTML-CSS",
+ "unpacked/jax/output/HTML-CSS"
+ ],
+ mathmlOutput: [
+ "config/*HTMLorMML.js",
+ "config/*HTMLorMML-full.js",
+ "unpacked/config/*HTMLorMML.js",
+ "unpacked/config/*HTMLorMML-full.js",
+ "jax/output/NativeMML",
+ "unpacked/jax/output/NativeMML"
+ ],
+ svgOutput: [
+ "config/*SVG.js",
+ "config/*SVG-full.js",
+ "unpacked/config/*SVG.js",
+ "unpacked/config/*SVG-full.js",
+ "jax/output/SVG",
+ "unpacked/jax/output/SVG"
+ ],
+ commonHtmlOutput: [
+ "configs/*CHTML.js",
+ "configs/*CHTML-full.js",
+ "unpacked/config/*CHTML.js",
+ "unpacked/configs/*CHTML-full.js",
+ "jax/output/CommonHTML",
+ "unpacked/jax/output/CommonHTML",
+ "extensions/CHTML-preview.js",
+ "unpacked/extensions/CHTML-preview.js"
+ ],
+ previewHtmlOutput: [
+ "jax/output/PreviewHTML",
+ "unpacked/jax/output/PreviewHTML",
+ "extensions/fast-preview.js",
+ "unpacked/extensions/fast-preview.js",
+ "extensions/CHTML-preview.js",
+ "unpacked/extensions/CHTML-preview.js"
+ ],
+ plainSourceOutput: [
+ "jax/output/PlainSource",
+ "unpacked/jax/output/PlainSource"
+ ],
+ // ## Locales
+ // Removes all locale files. Change this as needed to keep your preferred language.
+ // **NOTE.** English strings are hardcoded.
+ // **NOTE.** If you fix the locale, drop the menu entry: http://docs.mathjax.org/en/latest/options/MathMenu.html#configure-mathmenu
+ locales: [
+ "localization",
+ "unpacked/localization"
+ ],
+ // ## Misc.
+ miscConfig: [
+ "config/local",
+ "unpacked/config/local",
+ "config/Accessible-full.js",
+ "unpacked/config/Accessible-full.js",
+ "config/Accessible.js",
+ "unpacked/config/Accessible.js",
+ "config/default.js",
+ "unpacked/config/default.js",
+ "config/Safe.js",
+ "unpacked/config/Safe.js"
+ ],
+ a11yExtensions: [
+ "extensions/AssistiveMML.js",
+ "unpacked/extensions/AssistiveMML.js"
+ ],
+ miscExtensions: [
+ "extensions/FontWarnings.js",
+ "extensions/HelpDialog.js",
+ "extensions/MatchWebFonts.js",
+ "extensions/MathEvents.js",
+ "extensions/MathMenu.js",
+ "extensions/MathZoom.js",
+ "extensions/Safe.js",
+ "extensions/CHTML-preview.js",
+ // "extensions/toMathML.js", // only remove `toMathML.js` if you know exactly what you are doing.
+ "unpacked/extensions/FontWarnings.js",
+ "unpacked/extensions/HelpDialog.js",
+ "unpacked/extensions/MatchWebFonts.js",
+ "unpacked/extensions/MathEvents.js",
+ "unpacked/extensions/MathMenu.js",
+ "unpacked/extensions/MathZoom.js",
+ "unpacked/extensions/Safe.js",
+ "unpacked/extensions/CHTML-preview.js"
+ // "unpacked/extensions/toMathML.js", // only remove `toMathML.js` if you know exactly what you are doing.
+ ],
+ images: [
+ "images" // these are used in the menu. Removing them will give you 404 errors but nothing will break.
+ ],
+ notcode: [
+ ".gitignore",
+ "docs",
+ "test",
+ "CONTRIBUTING.md",
+ "README-branch.txt",
+ "README.md",
+ "bower.json",
+ "composer.json",
+ ".npmignore",
+ "package.json"
+ ]
+ },
+ "regex-replace": {
+ // disable image fonts in default HTML-CSS config
+ noImageFont: {
+ src: ['unpacked/jax/output/HTML-CSS/config.js'],
+ actions: [
+ {
+ name: 'nullImageFont',
+ search: /imageFont:[^,]+,/,
+ replace: 'imageFont: null,',
+ }
+ ]
+ }
+ }
+ });
+
+ grunt.loadNpmTasks("grunt-contrib-clean");
+ grunt.loadNpmTasks('grunt-regex-replace');
+
+ grunt.registerTask("component", [
+ // components-mathjax excludes only PNG fonts
+ "regex-replace:noImageFont",
+ "clean:png",
+ ]);
+
+ grunt.registerTask("template", [
+ // **Notes** on the template. When instructions say "Pick one", this means commenting out one item (so that it"s not cleaned).
+ //
+ // Early choices.
+ "clean:unpacked",
+ "clean:packed", // pick one -- packed for production, unpacked for development.
+ "clean:allConfigs", // if you do not need any combined configuration files.
+ // Fonts. Pick at least one! Check notes above on configurations.
+ "clean:fontAsana",
+ "clean:fontGyrePagella",
+ "clean:fontGyreTermes",
+ "clean:fontLatinModern",
+ "clean:fontNeoEuler",
+ "clean:fontStix",
+ "clean:fontStixWeb",
+ "clean:fontTeX",
+ // Font formats. Pick at least one (unless you use SVG output; then clean all).
+ "clean:dropFonts", // when using SVG output
+ "clean:eot",
+ "clean:otf",
+ "clean:png",
+ "clean:svg",
+ "clean:woff",
+ // Input. Pick at least one.
+ "clean:asciimathInput",
+ "clean:mathmlInput",
+ "clean:texInput",
+ // Output
+ "clean:htmlCssOutput",
+ "clean:mathmlOutput",
+ "clean:svgOutput",
+ // Extensions. You probably want to leave the set matching your choices.
+ "clean:extensionsAsciimath",
+ "clean:extensionsMathml",
+ "clean:extensionsTeX",
+ "clean:extensionHtmlCss",
+ // Other items
+ "clean:locales",
+ "clean:miscConfig",
+ // "clean:miscExtensions", // you probably want that
+ "clean:images",
+ "clean:notcode"
+ ]);
+ grunt.registerTask("MML_SVG_TeX", [
+ // Early choices.
+ "clean:unpacked",
+ // "clean:packed", // pick one -- packed for production, unpacked for development.
+ "clean:allConfigs", // if you do not need any combined configuration files.
+ // Fonts. Pick at least one! Check notes above on configurations.
+ "clean:fontAsana",
+ "clean:fontGyrePagella",
+ "clean:fontGyreTermes",
+ "clean:fontLatinModern",
+ "clean:fontNeoEuler",
+ "clean:fontStix",
+ "clean:fontStixWeb",
+ // "clean:fontTeX",
+ // Font formats. Pick at least one (unless you use SVG output; then clean all).
+ "clean:dropFonts", // when using SVG output
+ "clean:eot",
+ "clean:otf",
+ "clean:png",
+ "clean:svg",
+ "clean:woff",
+ // Input. Pick at least one.
+ "clean:asciimathInput",
+ // "clean:mathmlInput",
+ "clean:texInput",
+ // Output
+ "clean:htmlCssOutput",
+ "clean:mathmlOutput",
+ // "clean:svgOutput",
+ // Extensions. You probably want to leave the set matching your choices.
+ "clean:extensionsAsciimath",
+ // "clean:extensionsMathml",
+ "clean:extensionsTeX",
+ "clean:extensionHtmlCss",
+ // Other items
+ "clean:locales",
+ "clean:miscConfig",
+ // "clean:miscExtensions", // you probably want that
+ "clean:images",
+ "clean:notcode"
+ ]);
+ grunt.registerTask("mjNode", [
+ "clean:packed",
+ "clean:allConfigs",
+ "clean:dropFonts",
+ "clean:htmlCssOutput",
+ "clean:locales",
+ "clean:miscConfig",
+ "clean:images",
+ "clean:notcode",
+ "clean:miscExtensions"
+ ]);
+};