diff options
| author | Dave Tang <davetingpongtang@gmail.com> | 2026-06-23 16:06:56 +0900 |
|---|---|---|
| committer | Dave Tang <davetingpongtang@gmail.com> | 2026-06-23 16:06:56 +0900 |
| commit | 2b9d10dd8eb94e5c55d12698fb4b1acf7a7c6352 (patch) | |
| tree | 039d21b01b4b1c8b16834b83efe6096ef086c4a3 | |
| parent | 01fc8071fc4e12ef23a6ef2f78bfa77eecc626a2 (diff) | |
Fix code highlighting
| -rw-r--r-- | README.md | 39 | ||||
| -rwxr-xr-x | scripts/setup.sh | 32 |
2 files changed, 26 insertions, 45 deletions
@@ -26,9 +26,6 @@ The final layout this guide produces, relative to your document root: │ ├── docsify.min.js │ ├── search.min.js │ ├── docsify-copy-code.min.js - │ ├── prism-core.min.js - │ ├── prism-clike.min.js - │ ├── prism-javascript.min.js │ ├── prism-bash.min.js │ ├── prism-yaml.min.js │ ├── prism-python.min.js @@ -80,24 +77,18 @@ Replace `vue.css` in the command above with any of the following if preferred; s ### Syntax Highlighting (Prism) -Download the Prism highlighting engine and its language components. The core engine -ships **no languages on its own**, so each language is a separate file. Note that -`prism-clike.min.js` is the base grammar that `prism-javascript.min.js` extends, so it -must be downloaded and loaded **before** javascript (see Step 3). +Docsify **bundles Prism** and highlights a handful of languages out of the box — +`markup`/HTML, `css`, `clike`, and `javascript`. For any other language, download its +Prism component and load it **after** `docsify.min.js` (see Step 3) so it attaches to +Docsify's bundled Prism. -```bash -# Prism core engine (no languages on its own) -curl -L "https://cdn.jsdelivr.net/npm/prismjs@1/components/prism-core.min.js" \ - -o assets/js/prism-core.min.js - -# clike — base grammar required by javascript -curl -L "https://cdn.jsdelivr.net/npm/prismjs@1/components/prism-clike.min.js" \ - -o assets/js/prism-clike.min.js +> **Do not download `prism-core.min.js`.** A standalone Prism core loaded after Docsify +> replaces Docsify's own Prism on the page; the language components then attach to the +> wrong instance and silently fail to highlight. You only need the language files below. -# Language components -curl -L "https://cdn.jsdelivr.net/npm/prismjs@1/components/prism-javascript.min.js" \ - -o assets/js/prism-javascript.min.js +This guide adds bash, yaml, python, and r: +```bash curl -L "https://cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js" \ -o assets/js/prism-bash.min.js @@ -113,8 +104,8 @@ curl -L "https://cdn.jsdelivr.net/npm/prismjs@1/components/prism-r.min.js" \ To highlight more languages, download additional `prism-<lang>.min.js` files (browse the [Prism components](https://cdn.jsdelivr.net/npm/prismjs@1/components/)) and add a matching -`<script>` tag in Step 3. Some languages extend others — anything built on `clike` (e.g. -javascript) must load after `prism-clike.min.js`. +`<script>` tag in Step 3. A few Prism languages depend on others — if one does, download +its dependency too (Docsify already provides `clike`, the most common base grammar). ### Copy-to-Clipboard Button @@ -174,10 +165,7 @@ Create `index.html`: <script src="assets/js/search.min.js"></script> <script src="assets/js/docsify-copy-code.min.js"></script> - <!-- Prism: core engine first, then clike (required by javascript), then languages --> - <script src="assets/js/prism-core.min.js"></script> - <script src="assets/js/prism-clike.min.js"></script> - <script src="assets/js/prism-javascript.min.js"></script> + <!-- Extra Prism languages — Docsify bundles Prism core + html/css/js. Load after docsify. --> <script src="assets/js/prism-bash.min.js"></script> <script src="assets/js/prism-yaml.min.js"></script> <script src="assets/js/prism-python.min.js"></script> @@ -285,9 +273,6 @@ Expected output: ./assets/js/docsify-copy-code.min.js ./assets/js/docsify.min.js ./assets/js/prism-bash.min.js -./assets/js/prism-clike.min.js -./assets/js/prism-core.min.js -./assets/js/prism-javascript.min.js ./assets/js/prism-python.min.js ./assets/js/prism-r.min.js ./assets/js/prism-yaml.min.js diff --git a/scripts/setup.sh b/scripts/setup.sh index a404eae..d77d23e 100755 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -6,7 +6,7 @@ # bash setup-docsify.sh # # Downloads Docsify core, the search plugin, the Vue theme, the copy-to-clipboard -# plugin, and Prism syntax highlighting (bash, yaml, javascript, python, r) — all +# plugin, and extra Prism languages (bash, yaml, python, r) — all # served locally, no external CDN dependencies at runtime. # # Re-running in an existing site is safe: it refreshes the assets and regenerates @@ -82,15 +82,14 @@ fetch "${CDN}/docsify@${DOCSIFY_VERSION}/themes/vue.css" assets/css/ # Copy-to-clipboard plugin (injects its own CSS — no separate stylesheet needed) fetch "${CDN}/docsify-copy-code@3/dist/docsify-copy-code.min.js" assets/js/docsify-copy-code.min.js -# Prism syntax highlighting: core engine, then clike (required by javascript), -# then the individual languages. -fetch "${CDN}/prismjs@1/components/prism-core.min.js" assets/js/prism-core.min.js -fetch "${CDN}/prismjs@1/components/prism-clike.min.js" assets/js/prism-clike.min.js -fetch "${CDN}/prismjs@1/components/prism-javascript.min.js" assets/js/prism-javascript.min.js -fetch "${CDN}/prismjs@1/components/prism-bash.min.js" assets/js/prism-bash.min.js -fetch "${CDN}/prismjs@1/components/prism-yaml.min.js" assets/js/prism-yaml.min.js -fetch "${CDN}/prismjs@1/components/prism-python.min.js" assets/js/prism-python.min.js -fetch "${CDN}/prismjs@1/components/prism-r.min.js" assets/js/prism-r.min.js +# Extra Prism languages. Docsify already bundles Prism core plus html/css/clike/ +# javascript, so we only add the languages it does NOT ship. Never download +# prism-core here — a standalone core replaces Docsify's Prism and silently breaks +# highlighting for every language loaded after it. +fetch "${CDN}/prismjs@1/components/prism-bash.min.js" assets/js/prism-bash.min.js +fetch "${CDN}/prismjs@1/components/prism-yaml.min.js" assets/js/prism-yaml.min.js +fetch "${CDN}/prismjs@1/components/prism-python.min.js" assets/js/prism-python.min.js +fetch "${CDN}/prismjs@1/components/prism-r.min.js" assets/js/prism-r.min.js # ── Step 3: index.html ────────────────────────────────────────────────────────── step "Step 3 — Creating index.html" @@ -121,10 +120,7 @@ cat > index.html << 'HTML' <script src="assets/js/search.min.js"></script> <script src="assets/js/docsify-copy-code.min.js"></script> - <!-- Prism: core engine first, then clike (required by javascript), then languages --> - <script src="assets/js/prism-core.min.js"></script> - <script src="assets/js/prism-clike.min.js"></script> - <script src="assets/js/prism-javascript.min.js"></script> + <!-- Extra Prism languages — Docsify bundles Prism core + html/css/js. Load after docsify. --> <script src="assets/js/prism-bash.min.js"></script> <script src="assets/js/prism-yaml.min.js"></script> <script src="assets/js/prism-python.min.js"></script> @@ -200,7 +196,7 @@ echo "" echo -e "${GREEN}${BOLD}Setup complete.${NC}" echo -e "Open your site in a browser to verify." echo "" -echo -e "Syntax highlighting (Prism) is enabled for: bash, yaml, javascript, python, r." -echo -e "To add more languages, download additional prism-*.min.js files into" -echo -e "assets/js/ and add their <script> tags to index.html (after prism-core.min.js)." -echo -e "Copy-to-clipboard buttons are enabled on all code blocks." +echo -e "Syntax highlighting: html, css, and javascript are built into Docsify;" +echo -e "this setup adds bash, yaml, python, and r. To add more languages, download" +echo -e "additional prism-<lang>.min.js files into assets/js/ and add their <script>" +echo -e "tags to index.html. Copy-to-clipboard buttons are enabled on all code blocks." |
