summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Tang <davetingpongtang@gmail.com>2026-06-23 16:06:56 +0900
committerDave Tang <davetingpongtang@gmail.com>2026-06-23 16:06:56 +0900
commit2b9d10dd8eb94e5c55d12698fb4b1acf7a7c6352 (patch)
tree039d21b01b4b1c8b16834b83efe6096ef086c4a3
parent01fc8071fc4e12ef23a6ef2f78bfa77eecc626a2 (diff)
Fix code highlighting
-rw-r--r--README.md39
-rwxr-xr-xscripts/setup.sh32
2 files changed, 26 insertions, 45 deletions
diff --git a/README.md b/README.md
index fdf2fcd..8c92593 100644
--- a/README.md
+++ b/README.md
@@ -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."