diff --git a/shiki-604-cloudflare/package.json b/shiki-604-cloudflare/package.json index ed064f6a..edaab36a 100644 --- a/shiki-604-cloudflare/package.json +++ b/shiki-604-cloudflare/package.json @@ -12,14 +12,15 @@ "cf-release": "wrangler deploy" }, "dependencies": { - "@hiogawa/vite-plugin-ssr-middleware": "latest", - "shiki": "^1.4.0", - "vite": "latest", + "@shikijs/core": "^1.5.0", + "shiki": "^1.5.1", "vue": "^3.4.27" }, "devDependencies": { "@hattip/adapter-node": "^0.0.45", + "@hiogawa/vite-plugin-ssr-middleware": "^0.0.3", "@types/node": "^20.12.10", + "vite": "^5.2.11", "wrangler": "^3.53.1" }, "packageManager": "pnpm@9.0.6+sha512.f6d863130973207cb7a336d6b439a242a26ac8068077df530d6a86069419853dc1ffe64029ec594a9c505a3a410d19643c870aba6776330f5cfddcf10a9c1617" diff --git a/shiki-604-cloudflare/pnpm-lock.yaml b/shiki-604-cloudflare/pnpm-lock.yaml index 52923c41..d45c1f2e 100644 --- a/shiki-604-cloudflare/pnpm-lock.yaml +++ b/shiki-604-cloudflare/pnpm-lock.yaml @@ -8,15 +8,12 @@ importers: .: dependencies: - '@hiogawa/vite-plugin-ssr-middleware': - specifier: latest - version: 0.0.3(vite@5.2.11(@types/node@20.12.10)) + '@shikijs/core': + specifier: ^1.5.0 + version: 1.5.0 shiki: - specifier: ^1.4.0 - version: 1.4.0 - vite: - specifier: latest - version: 5.2.11(@types/node@20.12.10) + specifier: ^1.5.1 + version: 1.5.1 vue: specifier: ^3.4.27 version: 3.4.27 @@ -24,9 +21,15 @@ importers: '@hattip/adapter-node': specifier: ^0.0.45 version: 0.0.45 + '@hiogawa/vite-plugin-ssr-middleware': + specifier: ^0.0.3 + version: 0.0.3(vite@5.2.11(@types/node@20.12.10)) '@types/node': specifier: ^20.12.10 version: 20.12.10 + vite: + specifier: ^5.2.11 + version: 5.2.11(@types/node@20.12.10) wrangler: specifier: ^3.53.1 version: 3.53.1 @@ -486,8 +489,11 @@ packages: cpu: [x64] os: [win32] - '@shikijs/core@1.4.0': - resolution: {integrity: sha512-CxpKLntAi64h3j+TwWqVIQObPTED0FyXLHTTh3MKXtqiQNn2JGcMQQ362LftDbc9kYbDtrksNMNoVmVXzKFYUQ==} + '@shikijs/core@1.5.0': + resolution: {integrity: sha512-tdYjQu+jnvlPbJg4OjgCQ16zAfHlLk+RzA9o025aeaIyUww6W/Vd9TQ2t+gdZgK1fox29/L2yyqXLU6ErzYA0w==} + + '@shikijs/core@1.5.1': + resolution: {integrity: sha512-xjV63pRUBvxA1LsxOUhRKLPh0uUjwBLzAKLdEuYSLIylo71sYuwDcttqNP01Ib1TZlLfO840CXHPlgUUsYFjzg==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -777,8 +783,8 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} - shiki@1.4.0: - resolution: {integrity: sha512-5WIn0OL8PWm7JhnTwRWXniy6eEDY234mRrERVlFa646V2ErQqwIFd2UML7e0Pq9eqSKLoMa3Ke+xbsF+DAuy+Q==} + shiki@1.5.1: + resolution: {integrity: sha512-vx4Ds3M3B9ZEmLeSXqBAB85osBWV8ErZfP69kuFQZozPgHc33m7spLTCUkcjwEjFm3gk3F9IdXMv8kX+v9xDHA==} source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} @@ -1173,7 +1179,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.17.2': optional: true - '@shikijs/core@1.4.0': {} + '@shikijs/core@1.5.0': {} + + '@shikijs/core@1.5.1': {} '@types/estree@1.0.5': {} @@ -1532,9 +1540,9 @@ snapshots: '@types/node-forge': 1.3.11 node-forge: 1.3.1 - shiki@1.4.0: + shiki@1.5.1: dependencies: - '@shikijs/core': 1.4.0 + '@shikijs/core': 1.5.1 source-map-js@1.2.0: {} diff --git a/shiki-604-cloudflare/src/app.tsx b/shiki-604-cloudflare/src/app.tsx index da7a1723..41163855 100644 --- a/shiki-604-cloudflare/src/app.tsx +++ b/shiki-604-cloudflare/src/app.tsx @@ -1,21 +1,14 @@ import { defineComponent } from "vue"; -import { getHighlighterCore, loadWasm, type HighlighterCore } from "shiki/core"; +import { getHighlighterCore, type HighlighterCore } from "shiki/core"; let highlighter: HighlighterCore; export const App = defineComponent(async () => { - await loadWasm(async (info) => { - if (import.meta.env.VITE_BUILD_CF) { - const mod = await import("shiki/onig.wasm" as string); - return WebAssembly.instantiate(mod.default, info); - } else { - return import("shiki/wasm"); - } - }); - highlighter ??= await getHighlighterCore({ themes: [import("shiki/themes/vitesse-light.mjs")], langs: [import("shiki/langs/vue.mjs")], + // setup vite alias to `shiki/onig.wasm` during cf build + loadWasm: import("shiki/wasm"), }); const html = highlighter.codeToHtml(CODE, { diff --git a/shiki-604-cloudflare/vite.config.ts b/shiki-604-cloudflare/vite.config.ts index 1973e149..c752e7f8 100644 --- a/shiki-604-cloudflare/vite.config.ts +++ b/shiki-604-cloudflare/vite.config.ts @@ -7,9 +7,6 @@ import { defineConfig } from "vite"; export default defineConfig((env) => ({ clearScreen: false, - define: { - "import.meta.env.VITE_BUILD_CF": !!process.env["VITE_BUILD_CF"], - }, plugins: [ vitePluginLogger(), vitePluginSsrMiddleware({ @@ -18,11 +15,16 @@ export default defineConfig((env) => ({ : "/src/adapters/node", preview: path.resolve("./dist/server/index.js"), }), - { - name: "wrangler-wasm", + !!process.env["VITE_BUILD_CF"] && { + name: "shiki-wasm-cloudflare", apply: (_config, env) => !!env.isSsrBuild, config() { return { + resolve: { + alias: { + "shiki/wasm": "shiki/onig.wasm", + }, + }, build: { rollupOptions: { external: [/\.wasm$/],