CHANGELOG:補 ESM export

對應 main 之 a5faec5。檔尾加 `export { createCjkAutospace }` 讓
Vite / Rollup / TS 之 ESM 消費端可 named import;IIFE 串接端
sed 剝最後一行即可。
This commit is contained in:
2026-05-26 17:26:30 +08:00
parent b5ac89b687
commit 69f34413c9
2 changed files with 39 additions and 2 deletions
+28 -2
View File
@@ -1,4 +1,4 @@
<!-- built with theme=dracula, mode=report, at=2026-05-26T08:53:50Z -->
<!-- built with theme=dracula, mode=report, at=2026-05-26T09:26:30Z -->
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
@@ -2250,6 +2250,12 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }
<main>
<h2>2026-05-26 — 補 ESM <code>export</code>(四種消費形式並存)</h2>
<p>下游 Vite / Rollup / TypeScript 之靜態 ESM 解析需要真正之 <code>export</code> 關鍵字;原 UMD-ish<code>module.exports</code> + <code>globalThis</code>)對 ESM 消費端仍須走「副作用導入 + 從 global 取 factory」之 workaround。檔尾在既有 CJS / globalThis 兩塊後加 <code>export { createCjkAutospace }</code>,順序刻意如此 —— 讓 IIFE 串接端(Claude 模板 <code>build.sh</code> / Nvim peek build hook)只需以 <code>sed '/^export {/d'</code> 剝最後一行。</p>
<p>四種消費形式並存:ESM <code>import</code> / CommonJS <code>require</code> / browser <code>globalThis</code> / IIFE 串接(後者需剝 <code>export</code> 行)。</p>
<h2>2026-05-26 — Pass C:長英文段 lang 包裝(預設啟用)</h2>
<p>解決 CJK 兩端對齊正文中行末長英文詞之斷行問題。原模板於 runtime 端用 <code>&lt;wbr&gt;</code> 每 6 字元亂插斷詞機會,產生兩個觀感問題:(1)位置與音節邊界無關,斷在怪位;(2)<code>&lt;wbr&gt;</code> 為 zero-width,斷處不顯連字符,讀者無法辨認「上行末是被斷開的詞」。</p>
@@ -2330,6 +2336,11 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }
<script type="text/markdown" id="md-source">
# cjk-autospace Changelog
## 2026-05-26 ESM `export`四種消費形式並存
- 檔尾加 `export { createCjkAutospace }`順序在 CJS / globalThis 兩塊之後 IIFE 串接端只需 `sed '/^export {/d'` 剝最後一行
- 四種消費形式並存ESM `import` / CommonJS `require` / browser `globalThis` / IIFE 串接
## 2026-05-26 Pass C長英文段 lang 包裝預設啟用
- [A-Za-z]{N,} 之長英文段包進 `<span lang="en">`配消費端 CSS `[lang|="en"] { hyphens: auto; ... }` 用瀏覽器原生 en 字典斷詞 + 渲染連字符
@@ -2907,7 +2918,22 @@ function createCjkAutospace(options)
return { apply: apply };
}
/* ----- UMD-ish export ----- */
/* ----- 多形 export -----
*
* 四種消費場景並存:
* ESMVite / Rollup / TypeScript):使用 `export { createCjkAutospace }`
* 可 `import { createCjkAutospace } from "./cjk-autospace.js"`
* CommonJSNode `require`):使用 `module.exports`
* Browser global / `<script>` 標籤:使用 `globalThis` 賦值;
* IIFE 串接(build.sh / Nvim peek hook 把本檔內容 cat 進單個閉包):
* `export` 語句屬 ESM 之 module-level 語法,串入函式體內會語法錯誤,
* 故串接端須剝掉 `export {` 起始之那行(單行 `sed '/^export {/d'`
* 即可)。其餘 module.exports / globalThis 兩塊在閉包內安全(typeof
* 檢查不會 throw、globalThis 賦值無副作用)。
*
* 順序:先 CJS / globalThis(不影響語法解析),最後 ESM `export`
* 讓串接端只需剝最後一塊。
*/
if (typeof module !== "undefined" && module.exports)
{
module.exports = { createCjkAutospace: createCjkAutospace };
+11
View File
@@ -23,6 +23,12 @@
<main>
<h2>2026-05-26 — 補 ESM <code>export</code>(四種消費形式並存)</h2>
<p>下游 Vite / Rollup / TypeScript 之靜態 ESM 解析需要真正之 <code>export</code> 關鍵字;原 UMD-ish<code>module.exports</code> + <code>globalThis</code>)對 ESM 消費端仍須走「副作用導入 + 從 global 取 factory」之 workaround。檔尾在既有 CJS / globalThis 兩塊後加 <code>export { createCjkAutospace }</code>,順序刻意如此 —— 讓 IIFE 串接端(Claude 模板 <code>build.sh</code> / Nvim peek build hook)只需以 <code>sed '/^export {/d'</code> 剝最後一行。</p>
<p>四種消費形式並存:ESM <code>import</code> / CommonJS <code>require</code> / browser <code>globalThis</code> / IIFE 串接(後者需剝 <code>export</code> 行)。</p>
<h2>2026-05-26 — Pass C:長英文段 lang 包裝(預設啟用)</h2>
<p>解決 CJK 兩端對齊正文中行末長英文詞之斷行問題。原模板於 runtime 端用 <code>&lt;wbr&gt;</code> 每 6 字元亂插斷詞機會,產生兩個觀感問題:(1)位置與音節邊界無關,斷在怪位;(2)<code>&lt;wbr&gt;</code> 為 zero-width,斷處不顯連字符,讀者無法辨認「上行末是被斷開的詞」。</p>
@@ -87,6 +93,11 @@
<script type="text/markdown" id="md-source">
# cjk-autospace Changelog
## 2026-05-26 ESM `export`四種消費形式並存
- 檔尾加 `export { createCjkAutospace }`順序在 CJS / globalThis 兩塊之後 IIFE 串接端只需 `sed '/^export {/d'` 剝最後一行
- 四種消費形式並存ESM `import` / CommonJS `require` / browser `globalThis` / IIFE 串接
## 2026-05-26 Pass C長英文段 lang 包裝預設啟用
- [A-Za-z]{N,} 之長英文段包進 `<span lang="en">`配消費端 CSS `[lang|="en"] { hyphens: auto; ... }` 用瀏覽器原生 en 字典斷詞 + 渲染連字符