Skip to content

Instantly share code, notes, and snippets.

@simov
Last active April 30, 2024 09:42
Show Gist options
  • Save simov/ffc7517d7c1a7223b714218d1b01fdd2 to your computer and use it in GitHub Desktop.
Save simov/ffc7517d7c1a7223b714218d1b01fdd2 to your computer and use it in GitHub Desktop.

Revisions

  1. simov revised this gist Apr 30, 2024. 1 changed file with 138 additions and 65 deletions.
    203 changes: 138 additions & 65 deletions amo-notes-reviewer.md
    Original file line number Diff line number Diff line change
    @@ -1,12 +1,11 @@

    # Markdown Viewer - Third-party Dependencies
    # Markdown Viewer - Build Instructions

    > _Markdown Viewer is an open source browser extension hosted on GitHub: https://github.com/simov/markdown-viewer/tree/firefox_
    Build the `themes` and `vendor` folders, and create the `markdown-viewer.zip` package:

    ```bash
    # pick a release tag
    git clone --depth 1 --branch firefox https://github.com/simov/markdown-viewer.git
    # build
    cd markdown-viewer/
    sh build/package.sh firefox
    ```
    @@ -18,49 +17,83 @@ sh build/package.sh firefox
    - git
    - zip

    ## Operating System

    Ubuntu 22.04.3 LTS (jammy) 5.19.0-50-generic

    ## Build Tools

    - bundler - [rollup](https://www.npmjs.com/package/rollup)
    - minifier - [terser](https://www.npmjs.com/package/terser)

    ## Build Summary

    | Library | | Build Strategy | Outputs
    | :- | :- | :-| :-
    | [bootstrap](#bootstrap)| πŸ“„ | npm install - copy file | - `vendor/bootstrap.min.css`
    | [markdown-it](#markdown-it) | πŸ“¦ | npm install - bundle - minify | - `vendor/markdown-it.min.js`
    | [marked](#marked) | πŸ“¦ | npm install - bundle - minify | - `vendor/marked.min.js`
    | [mathjax](#mathjax) | πŸ“„ | npm install - copy files | - `vendor/mathjax/` (folder)
    | [mdc](#mdc) | πŸ“¦ | npm install - bundle - minify | - `vendor/mdc.min.js` <br> - `vendor/mdc.min.css`
    | [mermaid](#mermaid) | πŸ“„ | npm install - copy file | - `vendor/mermaid.min.js`
    | [mithril](#mithril) | πŸ“„ | npm install - copy file | - `vendor/mithril.min.js`
    | [prism](#prism) | πŸ“„β—| npm install - copy files - <br> minify `.js` files - minify `.css` files - <br> **one `.js` file modified** - <br> some `.css` files modified | - `vendor/prism.min.js` <br> - `vendor/prism-autoloader.min.js`❗ <br> - `vendor/prism/` (folder) <br> - `vendor/prism.min.css` <br> - `vendor/prism-okaidia.min.css`
    | [remark](#remark) | πŸ“¦ | npm install - bundle - minify | - `vendor/remark.min.js`
    | [themes](#themes) | πŸ“„ | npm install - git clone - copy files - <br> minify `.css` files - some `.css` files modified | - `themes/` (folder)
    | Library | | Build Strategy | Outputs
    | :- | :- | :- | :-
    | [bootstrap](#bootstrap)| πŸ“„ | copy file | β€’ `vendor/bootstrap.min.css`
    | [csso](#csso) | πŸ“„ | copy file | β€’ `vendor/csso.min.css`
    | [markdown-it](#markdown-it) | πŸ“¦ | bundle and minify | β€’ `vendor/markdown-it.min.js`
    | [marked](#marked) | πŸ“¦ | bundle and minify | β€’ `vendor/marked.min.js`
    | [mathjax](#mathjax) | πŸ“„ | copy files | β€’ `vendor/mathjax/` (folder)
    | [mdc](#mdc) | πŸ“¦ | bundle and minify | β€’ `vendor/mdc.min.js` <br> β€’ `vendor/mdc.min.css`
    | [mermaid](#mermaid) | πŸ“„β— | modify and copy file | β€’ `vendor/mermaid.min.js` ❗
    | [mithril](#mithril) | πŸ“„ | copy file | β€’ `vendor/mithril.min.js`
    | [panzoom](#panzoom) | πŸ“„ | copy file | β€’ `vendor/panzoom.min.js`
    | [prism](#prism) | πŸ“„β—| modify, minify and copy files | β€’ `vendor/prism.min.js` <br> β€’ `vendor/prism-autoloader.min.js`❗ <br> β€’ `vendor/prism/` (folder) <br> β€’ `vendor/prism.min.css` <br> β€’ `vendor/prism-okaidia.min.css`
    | [remark](#remark) | πŸ“¦ | bundle and minify | β€’ `vendor/remark.min.js`
    | [themes](#themes) | πŸ“„ | modify, minify and copy files | β€’ `themes/` (folder)

    ---

    ## bootstrap

    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/bootstrap
    - build:
    > `build/bootstrap/` https://github.com/simov/markdown-viewer/tree/firefox/build/bootstrap
    ```sh
    # πŸ“„ npm install - copy file
    # πŸ“„ copy file
    sh build/bootstrap/build.sh
    ```

    - output:
    - `vendor/bootstrap.min.css` == https://github.com/twbs/bootstrap/blob/v5.2.3/dist/css/bootstrap.min.css
    - `vendor/bootstrap.min.css` <br> https://github.com/twbs/bootstrap/blob/v5.3.3/dist/css/bootstrap.min.css

    - source:

    | module | version | source
    | :- | -: | :-
    | bootstrap | 5.2.3 | https://github.com/twbs/bootstrap/tree/v5.2.3
    | bootstrap | 5.3.3 | https://github.com/twbs/bootstrap/tree/v5.3.3

    ---

    ## csso

    - build:
    > `build/csso/` https://github.com/simov/markdown-viewer/tree/firefox/build/csso

    ```sh
    # πŸ“„ copy file
    sh build/csso/build.sh
    ```

    - output:
    - `vendor/csso.min.css` <br> node_modules/csso/dist/csso.js

    - source:

    | module | version | source
    | :- | -: | :-
    | csso | 5.0.5 | https://github.com/css/csso/tree/v5.0.5

    ---

    ## markdown-it

    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/markdown-it
    - build:
    > `build/markdown-it/` https://github.com/simov/markdown-viewer/tree/firefox/build/markdown-it

    ```sh
    # πŸ“¦ npm install - bundle - minify
    # πŸ“¦ bundle and minify
    sh build/markdown-it/build.sh
    ```

    @@ -89,10 +122,11 @@ sh build/package.sh firefox

    ## marked

    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/marked
    - build:
    > `build/marked/` https://github.com/simov/markdown-viewer/tree/firefox/build/marked

    ```sh
    # πŸ“¦ npm install - bundle - minify
    # πŸ“¦ bundle and minify
    sh build/marked/build.sh
    ```

    @@ -103,26 +137,27 @@ sh build/package.sh firefox

    | module | version | source
    | :- | -: | :-
    | marked | 9.0.3 | https://github.com/markedjs/marked/tree/v9.0.3
    | marked-gfm-heading-id | 3.1.0 | https://github.com/markedjs/marked-gfm-heading-id/tree/v3.1.0
    | marked-linkify-it | 3.1.4 | https://github.com/UziTech/marked-linkify-it/tree/v3.1.4
    | marked-smartypants | 1.1.3 | https://github.com/markedjs/marked-smartypants/tree/v1.1.3
    | marked | 12.0.1 | https://github.com/markedjs/marked/tree/v12.0.1
    | marked-gfm-heading-id | 3.1.3 | https://github.com/markedjs/marked-gfm-heading-id/tree/v3.1.3
    | marked-linkify-it | 3.1.9 | https://github.com/UziTech/marked-linkify-it/tree/v3.1.9
    | marked-smartypants | 1.1.6 | https://github.com/markedjs/marked-smartypants/tree/v1.1.6

    ---

    ## mathjax

    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/mathjax
    - build:
    > `build/mathjax/` https://github.com/simov/markdown-viewer/tree/firefox/build/mathjax

    ```sh
    # πŸ“„ npm install - copy files
    # πŸ“„ copy files
    sh build/mathjax/build.sh
    ```

    - output: `vendor/mathjax/`
    - `vendor/mathjax/tex-mml-chtml.js` == https://github.com/mathjax/MathJax/blob/3.2.2/es5/tex-mml-chtml.js
    - `vendor/mathjax/extensions/` == https://github.com/mathjax/MathJax/tree/3.2.2/es5/input/tex/extensions
    - `vendor/mathjax/fonts/` == https://github.com/mathjax/MathJax/tree/3.2.2/es5/output/chtml/fonts/woff-v2
    - output: `vendor/mathjax/` (folder)
    - `vendor/mathjax/tex-mml-chtml.js` <br> https://github.com/mathjax/MathJax/blob/3.2.2/es5/tex-mml-chtml.js
    - `vendor/mathjax/extensions/` <br> https://github.com/mathjax/MathJax/tree/3.2.2/es5/input/tex/extensions
    - `vendor/mathjax/fonts/` <br> https://github.com/mathjax/MathJax/tree/3.2.2/es5/output/chtml/fonts/woff-v2

    - source:

    @@ -134,10 +169,11 @@ sh build/package.sh firefox

    ## mdc

    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/mdc
    - build:
    > `build/mdc/` https://github.com/simov/markdown-viewer/tree/firefox/build/mdc

    ```sh
    # πŸ“¦ npm install - bundle - minify
    # πŸ“¦ bundle and minify
    sh build/mdc/build.sh
    ```

    @@ -159,35 +195,50 @@ sh build/package.sh firefox

    ## mermaid

    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/mermaid
    - build:
    > `build/mermaid/` https://github.com/simov/markdown-viewer/tree/firefox/build/mermaid

    ```sh
    # πŸ“„ npm install - copy file
    # πŸ“„ copy file
    sh build/mermaid/build.sh
    ```

    - output:
    - `vendor/mermaid.min.js` == (available on npm install only)
    - `vendor/mermaid.min.js` <br> node_modules/mermaid/dist/mermaid.min.js

    - source:

    | module | version | source
    | :- | -: | :-
    | mermaid | 9.2.2 | https://github.com/mermaid-js/mermaid/tree/v9.2.2
    | mermaid | 10.8.0 | https://github.com/mermaid-js/mermaid/tree/v10.8.0 ❗ (modified)

    - details: ❗

    - as explained in this issue https://github.com/mermaid-js/mermaid/issues/5378
    - `mermaid.min.js` cannot be injected as content script after v9.2.2 due to CSP violations
    - because of that I am replacing the two offending `Function` calls https://github.com/simov/markdown-viewer/blob/firefox/build/mermaid/fix-csp-issue.js

    ```diff
    - Function("return this")
    + (() => globalThis)
    ```
    - in fact that same fix got submitted into the build script for Mermaid, but it is still awaiting for approval https://github.com/mermaid-js/mermaid/pull/5408
    - and this is the issue that I submitted initially on the Mozilla Add-on Discorse where I got adviced to patch the build https://discourse.mozilla.org/t/cannot-inject-a-javascript-file-because-of-a-csp-limitations/128649
    ---
    ## mithril
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/mithril
    - build:
    > `build/mithril/` https://github.com/simov/markdown-viewer/tree/firefox/build/mithril
    ```sh
    # πŸ“„ npm install - copy file
    # πŸ“„ copy file
    sh build/mithril/build.sh
    ```
    - output:
    - `vendor/mithril.min.js` == https://github.com/MithrilJS/mithril.js/blob/v1.1.7/mithril.min.js
    - `vendor/mithril.min.js` <br> https://github.com/MithrilJS/mithril.js/blob/v1.1.7/mithril.min.js
    - source:
    @@ -197,22 +248,43 @@ sh build/package.sh firefox
    ---
    ## panzoom
    - build:
    > `build/panzoom/` https://github.com/simov/markdown-viewer/tree/firefox/build/panzoom
    ```sh
    # πŸ“„ copy file
    sh build/panzoom/build.sh
    ```
    - output:
    - `vendor/panzoom.min.js` <br> node_modules/@panzoom/panzoom/dist/panzoom.min.js
    - source:
    | module | version | source
    | :- | -: | :-
    | panzoom | 4.5.1 | https://github.com/timmywil/panzoom/tree/4.5.1
    ---
    ## prism
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/prism
    - build:
    > `build/prism/` https://github.com/simov/markdown-viewer/tree/firefox/build/prism
    ```sh
    # πŸ“„ npm install - copy files - minify .js files - minify .css files
    # one .js file modified - some .css files modified
    # πŸ“„ modify, minify and copy files
    sh build/prism/build.sh
    ```
    - output:
    - `vendor/prism.min.js` == https://github.com/PrismJS/prism/blob/v1.29.0/prism.js (but minifed)
    - `vendor/prism-autoloader.min.js` == https://github.com/PrismJS/prism/blob/v1.29.0/plugins/autoloader/prism-autoloader.js ❗ (one line modified, and then minified)
    - `vendor/prism/` (folder) == https://github.com/PrismJS/prism/tree/v1.29.0/components (all .min.js files)
    - `vendor/prism.min.css` == https://github.com/PrismJS/prism/blob/v1.29.0/themes/prism.css (modified and minified)
    - `vendor/prism-okaidia.min.css` == https://github.com/PrismJS/prism/blob/v1.29.0/themes/prism-okaidia.css (modified and minified)
    - `vendor/prism.min.js` <br> https://github.com/PrismJS/prism/blob/v1.29.0/prism.js (minifed)
    - `vendor/prism-autoloader.min.js` <br> https://github.com/PrismJS/prism/blob/v1.29.0/plugins/autoloader/prism-autoloader.js ❗ (modified, minified)
    - `vendor/prism/` <br> https://github.com/PrismJS/prism/tree/v1.29.0/components (.min.js only)
    - `vendor/prism.min.css` <br> https://github.com/PrismJS/prism/blob/v1.29.0/themes/prism.css (modified, minified)
    - `vendor/prism-okaidia.min.css` <br> https://github.com/PrismJS/prism/blob/v1.29.0/themes/prism-okaidia.css (modified, minified)
    - source:
    @@ -235,10 +307,11 @@ sh build/package.sh firefox
    ## remark
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/remark
    - build:
    > `build/remark/` https://github.com/simov/markdown-viewer/tree/firefox/build/remark
    ```sh
    # πŸ“¦ npm install - bundle - minify
    # πŸ“¦ bundle and minify
    sh build/remark/build.sh
    ```
    @@ -249,34 +322,34 @@ sh build/package.sh firefox
    | module | version | source
    | :- | -: | :-
    | remark | 14.0.2 | https://github.com/remarkjs/remark/tree/14.0.2
    | remark-breaks | 3.0.2 | https://github.com/remarkjs/remark-breaks/tree/3.0.2
    | remark-gfm | 3.0.1 | https://github.com/remarkjs/remark-gfm/tree/3.0.1
    | remark-html | 15.0.2 | https://github.com/remarkjs/remark-html/tree/15.0.2
    | remark | 15.0.1 | https://github.com/remarkjs/remark/tree/15.0.1
    | remark-breaks | 4.0.0 | https://github.com/remarkjs/remark-breaks/tree/4.0.0
    | remark-gfm | 4.0.0 | https://github.com/remarkjs/remark-gfm/tree/4.0.0
    | remark-html | 16.0.1 | https://github.com/remarkjs/remark-html/tree/16.0.1
    | remark-slug | 7.0.1 | https://github.com/remarkjs/remark-slug/tree/7.0.1
    ---
    ## themes
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/themes
    - build:
    > `build/themes/` https://github.com/simov/markdown-viewer/tree/firefox/build/themes
    ```sh
    # πŸ“„ npm install - git clone - copy files - minify .css files
    # some .css files modified
    # πŸ“„ modify, minify and copy files
    sh build/themes/build.sh
    ```
    - output: `themes/`
    - `themes/github.css` == https://github.com/sindresorhus/github-markdown-css/blob/v5.2.0/github-markdown-light.css (but minified)
    - `themes/github-dark.css` == https://github.com/sindresorhus/github-markdown-css/blob/v5.2.0/github-markdown-dark.css (but minified)
    - `themes/... .css` == https://github.com/gadenbuie/cleanrmd/tree/v0.1.0/inst/resources (almost all themes, but minified, some also modified)
    - output: `themes/` (folder)
    - `themes/github.css` <br> https://github.com/sindresorhus/github-markdown-css/blob/v5.5.1/github-markdown-light.css (minified)
    - `themes/github-dark.css` <br> https://github.com/sindresorhus/github-markdown-css/blob/v5.5.1/github-markdown-dark.css (minified)
    - `themes/*.css` <br> https://github.com/gadenbuie/cleanrmd/tree/v0.1.0/inst/resources (modified, minified)
    - source:
    | module | version | source
    | :- | -: | :-
    | cleanrmd | 0.1.0 | https://github.com/gadenbuie/cleanrmd/tree/v0.1.0
    | github-markdown-css | 5.2.0 | https://github.com/sindresorhus/github-markdown-css/tree/v5.2.0
    | github-markdown-css | 5.5.1 | https://github.com/sindresorhus/github-markdown-css/tree/v5.5.1
    ---
  2. simov revised this gist Oct 24, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion amo-notes-reviewer.md
    Original file line number Diff line number Diff line change
    @@ -202,7 +202,7 @@ sh build/package.sh firefox
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/prism

    ```sh
    # πŸ“¦ npm install - copy files - minify .js files - minify .css files
    # πŸ“„ npm install - copy files - minify .js files - minify .css files
    # one .js file modified - some .css files modified
    sh build/prism/build.sh
    ```
  3. simov revised this gist Oct 23, 2023. 1 changed file with 11 additions and 11 deletions.
    22 changes: 11 additions & 11 deletions amo-notes-reviewer.md
    Original file line number Diff line number Diff line change
    @@ -37,7 +37,7 @@ sh build/package.sh firefox

    ## bootstrap

    - build: https://github.com/simov/markdown-viewer/tree/main/build/bootstrap
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/bootstrap

    ```sh
    # πŸ“„ npm install - copy file
    @@ -57,7 +57,7 @@ sh build/package.sh firefox

    ## markdown-it

    - build: https://github.com/simov/markdown-viewer/tree/main/build/markdown-it
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/markdown-it

    ```sh
    # πŸ“¦ npm install - bundle - minify
    @@ -89,7 +89,7 @@ sh build/package.sh firefox

    ## marked

    - build: https://github.com/simov/markdown-viewer/tree/main/build/marked
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/marked

    ```sh
    # πŸ“¦ npm install - bundle - minify
    @@ -112,7 +112,7 @@ sh build/package.sh firefox

    ## mathjax

    - build: https://github.com/simov/markdown-viewer/tree/main/build/mathjax
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/mathjax

    ```sh
    # πŸ“„ npm install - copy files
    @@ -134,7 +134,7 @@ sh build/package.sh firefox

    ## mdc

    - build: https://github.com/simov/markdown-viewer/tree/main/build/mdc
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/mdc

    ```sh
    # πŸ“¦ npm install - bundle - minify
    @@ -159,7 +159,7 @@ sh build/package.sh firefox

    ## mermaid

    - build: https://github.com/simov/markdown-viewer/tree/main/build/mermaid
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/mermaid

    ```sh
    # πŸ“„ npm install - copy file
    @@ -179,7 +179,7 @@ sh build/package.sh firefox

    ## mithril

    - build: https://github.com/simov/markdown-viewer/tree/main/build/mithril
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/mithril

    ```sh
    # πŸ“„ npm install - copy file
    @@ -199,7 +199,7 @@ sh build/package.sh firefox

    ## prism

    - build: https://github.com/simov/markdown-viewer/tree/main/build/prism
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/prism

    ```sh
    # πŸ“¦ npm install - copy files - minify .js files - minify .css files
    @@ -223,7 +223,7 @@ sh build/package.sh firefox
    - details: ❗

    - as explained in this issue https://github.com/PrismJS/prism/issues/3654
    - the `addScript` method needs to be exposed inside the `prism-autoloader.js` plugin https://github.com/simov/markdown-viewer/blob/main/build/prism/fix-autoloader.js
    - the `addScript` method needs to be exposed inside the `prism-autoloader.js` plugin https://github.com/simov/markdown-viewer/blob/firefox/build/prism/fix-autoloader.js

    ```diff
    - addScript(getLanguagePath(lang), function () {
    @@ -235,7 +235,7 @@ sh build/package.sh firefox
    ## remark
    - build: https://github.com/simov/markdown-viewer/tree/main/build/remark
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/remark
    ```sh
    # πŸ“¦ npm install - bundle - minify
    @@ -259,7 +259,7 @@ sh build/package.sh firefox
    ## themes
    - build: https://github.com/simov/markdown-viewer/tree/main/build/themes
    - build: https://github.com/simov/markdown-viewer/tree/firefox/build/themes
    ```sh
    # πŸ“„ npm install - git clone - copy files - minify .css files
  4. simov revised this gist Oct 22, 2023. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions amo-notes-reviewer.md
    Original file line number Diff line number Diff line change
    @@ -187,7 +187,7 @@ sh build/package.sh firefox
    ```

    - output:
    - `vendor/mithril.min.js` == https://github.com/MithrilJS/mithril.js/blob/v1.1.6/mithril.min.js
    - `vendor/mithril.min.js` == https://github.com/MithrilJS/mithril.js/blob/v1.1.7/mithril.min.js

    - source:

    @@ -223,7 +223,7 @@ sh build/package.sh firefox
    - details: ❗

    - as explained in this issue https://github.com/PrismJS/prism/issues/3654
    - the `addScript` method needs to be exposed inside the `prism-autoloader.js` file https://github.com/simov/markdown-viewer/blob/main/build/prism/fix-autoloader.js
    - the `addScript` method needs to be exposed inside the `prism-autoloader.js` plugin https://github.com/simov/markdown-viewer/blob/main/build/prism/fix-autoloader.js

    ```diff
    - addScript(getLanguagePath(lang), function () {
  5. simov revised this gist Oct 22, 2023. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion amo-notes-reviewer.md
    Original file line number Diff line number Diff line change
    @@ -223,7 +223,7 @@ sh build/package.sh firefox
    - details: ❗

    - as explained in this issue https://github.com/PrismJS/prism/issues/3654
    - the `addScript` method needs to be exposed inside the `prism-autoloader.js` file https://github.com/simov/markdown-viewer/blob/5.2/build/prism/fix-autoloader.js
    - the `addScript` method needs to be exposed inside the `prism-autoloader.js` file https://github.com/simov/markdown-viewer/blob/main/build/prism/fix-autoloader.js

    ```diff
    - addScript(getLanguagePath(lang), function () {
  6. simov created this gist Oct 22, 2023.
    282 changes: 282 additions & 0 deletions amo-notes-reviewer.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,282 @@

    # Markdown Viewer - Third-party Dependencies

    Build the `themes` and `vendor` folders, and create the `markdown-viewer.zip` package:

    ```bash
    # pick a release tag
    git clone --depth 1 --branch firefox https://github.com/simov/markdown-viewer.git
    # build
    cd markdown-viewer/
    sh build/package.sh firefox
    ```

    ## Build Dependencies

    - node >= 18
    - npm >= 10
    - git
    - zip

    ## Build Summary

    | Library | | Build Strategy | Outputs
    | :- | :- | :-| :-
    | [bootstrap](#bootstrap)| πŸ“„ | npm install - copy file | - `vendor/bootstrap.min.css`
    | [markdown-it](#markdown-it) | πŸ“¦ | npm install - bundle - minify | - `vendor/markdown-it.min.js`
    | [marked](#marked) | πŸ“¦ | npm install - bundle - minify | - `vendor/marked.min.js`
    | [mathjax](#mathjax) | πŸ“„ | npm install - copy files | - `vendor/mathjax/` (folder)
    | [mdc](#mdc) | πŸ“¦ | npm install - bundle - minify | - `vendor/mdc.min.js` <br> - `vendor/mdc.min.css`
    | [mermaid](#mermaid) | πŸ“„ | npm install - copy file | - `vendor/mermaid.min.js`
    | [mithril](#mithril) | πŸ“„ | npm install - copy file | - `vendor/mithril.min.js`
    | [prism](#prism) | πŸ“„β—| npm install - copy files - <br> minify `.js` files - minify `.css` files - <br> **one `.js` file modified** - <br> some `.css` files modified | - `vendor/prism.min.js` <br> - `vendor/prism-autoloader.min.js`❗ <br> - `vendor/prism/` (folder) <br> - `vendor/prism.min.css` <br> - `vendor/prism-okaidia.min.css`
    | [remark](#remark) | πŸ“¦ | npm install - bundle - minify | - `vendor/remark.min.js`
    | [themes](#themes) | πŸ“„ | npm install - git clone - copy files - <br> minify `.css` files - some `.css` files modified | - `themes/` (folder)

    ---

    ## bootstrap

    - build: https://github.com/simov/markdown-viewer/tree/main/build/bootstrap

    ```sh
    # πŸ“„ npm install - copy file
    sh build/bootstrap/build.sh
    ```

    - output:
    - `vendor/bootstrap.min.css` == https://github.com/twbs/bootstrap/blob/v5.2.3/dist/css/bootstrap.min.css

    - source:

    | module | version | source
    | :- | -: | :-
    | bootstrap | 5.2.3 | https://github.com/twbs/bootstrap/tree/v5.2.3

    ---

    ## markdown-it

    - build: https://github.com/simov/markdown-viewer/tree/main/build/markdown-it

    ```sh
    # πŸ“¦ npm install - bundle - minify
    sh build/markdown-it/build.sh
    ```

    - output:
    - `vendor/markdown-it.min.js`

    - source:

    | module | version | source
    | :- | -: | :-
    | markdown-it | 13.0.1 | https://github.com/markdown-it/markdown-it/tree/13.0.1
    | markdown-it-abbr | 1.0.4 | https://github.com/markdown-it/markdown-it-abbr/tree/1.0.4
    | markdown-it-anchor | 8.6.7 | https://github.com/valeriangalliat/markdown-it-anchor/tree/v8.6.7
    | markdown-it-attrs | 4.1.6 | https://github.com/arve0/markdown-it-attrs/tree/v4.1.6
    | markdown-it-cjk-breaks | 1.1.3 | https://github.com/markdown-it/markdown-it-cjk-breaks/tree/1.1.3
    | markdown-it-deflist | 2.1.0 | https://github.com/markdown-it/markdown-it-deflist/tree/2.1.0
    | markdown-it-footnote | 3.0.3 | https://github.com/markdown-it/markdown-it-footnote/tree/3.0.3
    | markdown-it-ins | 3.0.1 | https://github.com/markdown-it/markdown-it-ins/tree/3.0.1
    | markdown-it-mark | 3.0.1 | https://github.com/markdown-it/markdown-it-mark/tree/3.0.1
    | markdown-it-sub | 1.0.0 | https://github.com/markdown-it/markdown-it-sub/tree/1.0.0
    | markdown-it-sup | 1.0.0 | https://github.com/markdown-it/markdown-it-sup/tree/1.0.0
    | markdown-it-task-lists | 2.1.1 | https://github.com/revin/markdown-it-task-lists
    | github-slugger | 2.0.0 | https://github.com/Flet/github-slugger/tree/2.0.0

    ---

    ## marked

    - build: https://github.com/simov/markdown-viewer/tree/main/build/marked

    ```sh
    # πŸ“¦ npm install - bundle - minify
    sh build/marked/build.sh
    ```

    - output:
    - `vendor/marked.min.js`

    - source:

    | module | version | source
    | :- | -: | :-
    | marked | 9.0.3 | https://github.com/markedjs/marked/tree/v9.0.3
    | marked-gfm-heading-id | 3.1.0 | https://github.com/markedjs/marked-gfm-heading-id/tree/v3.1.0
    | marked-linkify-it | 3.1.4 | https://github.com/UziTech/marked-linkify-it/tree/v3.1.4
    | marked-smartypants | 1.1.3 | https://github.com/markedjs/marked-smartypants/tree/v1.1.3

    ---

    ## mathjax

    - build: https://github.com/simov/markdown-viewer/tree/main/build/mathjax

    ```sh
    # πŸ“„ npm install - copy files
    sh build/mathjax/build.sh
    ```

    - output: `vendor/mathjax/`
    - `vendor/mathjax/tex-mml-chtml.js` == https://github.com/mathjax/MathJax/blob/3.2.2/es5/tex-mml-chtml.js
    - `vendor/mathjax/extensions/` == https://github.com/mathjax/MathJax/tree/3.2.2/es5/input/tex/extensions
    - `vendor/mathjax/fonts/` == https://github.com/mathjax/MathJax/tree/3.2.2/es5/output/chtml/fonts/woff-v2

    - source:

    | module | version | source
    | :- | -: | :-
    | mathjax | 3.2.2 | https://github.com/mathjax/MathJax/tree/3.2.2

    ---

    ## mdc

    - build: https://github.com/simov/markdown-viewer/tree/main/build/mdc

    ```sh
    # πŸ“¦ npm install - bundle - minify
    sh build/mdc/build.sh
    ```

    - output:
    - `vendor/mdc.min.js`
    - `vendor/mdc.min.css`

    - source:

    | module | version | source
    | :- | -: | :-
    | @material/button | 0.37.1 | https://github.com/material-components/material-components-web/tree/v0.37.1
    | @material/ripple | 0.37.1 | https://github.com/material-components/material-components-web/tree/v0.37.1
    | @material/switch | 0.36.1 | https://github.com/material-components/material-components-web/tree/v0.36.1
    | @material/tabs | 0.37.1 | https://github.com/material-components/material-components-web/tree/v0.37.1
    | @material/textfield | 0.37.1 | https://github.com/material-components/material-components-web/tree/v0.37.1

    ---

    ## mermaid

    - build: https://github.com/simov/markdown-viewer/tree/main/build/mermaid

    ```sh
    # πŸ“„ npm install - copy file
    sh build/mermaid/build.sh
    ```

    - output:
    - `vendor/mermaid.min.js` == (available on npm install only)

    - source:

    | module | version | source
    | :- | -: | :-
    | mermaid | 9.2.2 | https://github.com/mermaid-js/mermaid/tree/v9.2.2

    ---

    ## mithril

    - build: https://github.com/simov/markdown-viewer/tree/main/build/mithril

    ```sh
    # πŸ“„ npm install - copy file
    sh build/mithril/build.sh
    ```

    - output:
    - `vendor/mithril.min.js` == https://github.com/MithrilJS/mithril.js/blob/v1.1.6/mithril.min.js

    - source:

    | module | version | source
    | :- | -: | :-
    | mithril | 1.1.7 | https://github.com/MithrilJS/mithril.js/tree/v1.1.7

    ---

    ## prism

    - build: https://github.com/simov/markdown-viewer/tree/main/build/prism

    ```sh
    # πŸ“¦ npm install - copy files - minify .js files - minify .css files
    # one .js file modified - some .css files modified
    sh build/prism/build.sh
    ```

    - output:
    - `vendor/prism.min.js` == https://github.com/PrismJS/prism/blob/v1.29.0/prism.js (but minifed)
    - `vendor/prism-autoloader.min.js` == https://github.com/PrismJS/prism/blob/v1.29.0/plugins/autoloader/prism-autoloader.js ❗ (one line modified, and then minified)
    - `vendor/prism/` (folder) == https://github.com/PrismJS/prism/tree/v1.29.0/components (all .min.js files)
    - `vendor/prism.min.css` == https://github.com/PrismJS/prism/blob/v1.29.0/themes/prism.css (modified and minified)
    - `vendor/prism-okaidia.min.css` == https://github.com/PrismJS/prism/blob/v1.29.0/themes/prism-okaidia.css (modified and minified)

    - source:

    | module | version | source
    | :- | -: | :-
    | prismjs | 1.29.0 | https://github.com/PrismJS/prism/tree/v1.29.0

    - details: ❗

    - as explained in this issue https://github.com/PrismJS/prism/issues/3654
    - the `addScript` method needs to be exposed inside the `prism-autoloader.js` file https://github.com/simov/markdown-viewer/blob/5.2/build/prism/fix-autoloader.js

    ```diff
    - addScript(getLanguagePath(lang), function () {
    + Prism.plugins.autoloader.addScript(lang, function () {
    ```
    - so that it can be patched at runtime to load syntax definitions from a background page https://github.com/simov/markdown-viewer/blob/5.2/content/prism.js
    ---
    ## remark
    - build: https://github.com/simov/markdown-viewer/tree/main/build/remark
    ```sh
    # πŸ“¦ npm install - bundle - minify
    sh build/remark/build.sh
    ```
    - output:
    - `vendor/remark.min.js`
    - source:
    | module | version | source
    | :- | -: | :-
    | remark | 14.0.2 | https://github.com/remarkjs/remark/tree/14.0.2
    | remark-breaks | 3.0.2 | https://github.com/remarkjs/remark-breaks/tree/3.0.2
    | remark-gfm | 3.0.1 | https://github.com/remarkjs/remark-gfm/tree/3.0.1
    | remark-html | 15.0.2 | https://github.com/remarkjs/remark-html/tree/15.0.2
    | remark-slug | 7.0.1 | https://github.com/remarkjs/remark-slug/tree/7.0.1
    ---
    ## themes
    - build: https://github.com/simov/markdown-viewer/tree/main/build/themes
    ```sh
    # πŸ“„ npm install - git clone - copy files - minify .css files
    # some .css files modified
    sh build/themes/build.sh
    ```
    - output: `themes/`
    - `themes/github.css` == https://github.com/sindresorhus/github-markdown-css/blob/v5.2.0/github-markdown-light.css (but minified)
    - `themes/github-dark.css` == https://github.com/sindresorhus/github-markdown-css/blob/v5.2.0/github-markdown-dark.css (but minified)
    - `themes/... .css` == https://github.com/gadenbuie/cleanrmd/tree/v0.1.0/inst/resources (almost all themes, but minified, some also modified)
    - source:
    | module | version | source
    | :- | -: | :-
    | cleanrmd | 0.1.0 | https://github.com/gadenbuie/cleanrmd/tree/v0.1.0
    | github-markdown-css | 5.2.0 | https://github.com/sindresorhus/github-markdown-css/tree/v5.2.0
    ---