generated at
esbuild deno loaderをweb browserで動かす
esbuild_deno_loaderweb browserだと動かせない動いた!

作業ログ
依存コードに Deno を使うコードが含まれてしまっているっぽい
Deno.* をmockで提供すれば動かせないか?
Deno.build.os にアクセスされている
Deno.errors.AlreadyExists
deno_std/fs copy move が走っている
2024-07-15 13:44:36 minifyなしで調べたほうが早い
はーん。副作用が混じってしまっているのか
13:50:24 うごいた
deno-mock.js
globalThis.Deno = { build: { os: "linux" }, errors: { AlreadyExists: Error }, env: { get: () => undefined }, permissions: { query: () => Promise.resolve("denied") }, cwd: () => location.href, };
/*@__PURE__*/で削れないかな?
mock入れて動くようになった.ts
import "./deno-mock.js"; // esbuild_deno_loaderより先に読み込む
目的のimportより前に読み込みたい副作用は、importを使う
mock入れて動くようになった.ts
import { initialize, build } from "../esbuild-wasm-no-blob/mod.ts"; import { denoResolverPlugin, denoLoaderPlugin } from "https://deno.land/x/esbuild_deno_loader@0.9.0/mod.ts"; try { await initialize({ // 0.23.0 wasmModule: await WebAssembly.compileStreaming( fetch("https://scrapbox.io/files/66b7068ffd3bc2001cedee03.wasm") ), workerURL: "/api/code/takker-dist/esbuild-wasm-no-blob/worker.js", }); } catch(_) { // 重複初期化エラーは無視 } const result = await build({ entryPoints: [ "https://scrapbox.io/api/code/nishio/nishio/script.js", "https://scrapbox.io/api/code/takker/scrapbox-userscript-std/mod.ts", // css is not supported //"https://scrapbox.io/api/code/nishio/settings/style.css", "https://scrapbox.io/api/code/shokai/shokai/script.js", ], format: "esm", minify: true, bundle: true, outdir: "out", // https://scrapbox.io/api/code が /out に置換される charset: "utf8", plugins: [ denoResolverPlugin(),
import graphを取得したかったが、resolved URLしか arg から取得できなかった
importer が消えている
結果だけなら、Metafile.inputsから取得できるし、それでいいか。
mock入れて動くようになった.ts
{ name: "inspector", setup(build) { const onResolve = (args) => { console.debug(args); return undefined; }; build.onResolve({ filter: /.*/, namespace: "file" }, onResolve); build.onResolve({ filter: /.*/, namespace: "http" }, onResolve); build.onResolve({ filter: /.*/, namespace: "https" }, onResolve); build.onResolve({ filter: /.*/, namespace: "data" }, onResolve); build.onResolve({ filter: /.*/, namespace: "npm" }, onResolve); build.onResolve({ filter: /.*/, namespace: "jsr" }, onResolve); build.onResolve({ filter: /.*/, namespace: "node" }, onResolve); }, }, denoLoaderPlugin({ loader: "portable" }), ], write: false, }); // 2つのファイルが配列される console.debug(result.outputFiles);

なお、esbuild_deno_loaderはweb browserへ対応する予定がない

#2024-08-14 08:48:27
#2024-07-30 09:56:01
#2024-07-16 11:27:20
#2024-07-15 16:09:10
#2024-06-24 11:16:35