convert the contents of the file you wish to bundle to equivalent javascript code using the GenericLoader.parseToJs method.
constjs_content = awaitmy_file_loader.parseToJs()
pass the js content to your esbuild plugin's onLoad result, or use it as an entrypoint via stdin.
constbuild_result = awaitesbuild.build({ absWorkingDir:"D:/my/project/", splitting:true, // required, so that the bundled `js_content` imports the referenced dependency files, instead of having them injected. format:"esm", // required for the `splitting` option to work bundle:true, // required, otherwise all links/dependencies will be treated as "external" and won't be transformed. outdir:"./out/", // required, for multiple output files write:false, // required, because the bundled content needs to exist in-memory for us to transform/unparse it back to its original form. minify:true, // optiotnal, useful for treeshaking. chunkNames:"[ext]/[name]-[hash]", // optional, useful for specifying the structure of the output directory assetNames:"assets/[name]-[hash]", // optional, useful for specifying the structure of the output directory plugins: [...denoPlugins()], // optional, use the Deno esbuild plugin to resolve "http://", "file://", "jsr:", and "npm:" imports. stdin: { contents:js_content, loader:"ts", resolveDir:"D:/my/project/", sourcefile:"D:/my/project/my_file.xyz", }, })
once the build is complete, convert back the bundled entrypoint from javascript to your file's format using the GenericLoader.unparseFromJs method.
constjs_content_bundled = build_result.outputFiles[0].text// assuming that the first output file corresponds to your entrypoint constmy_file_bundled = awaitmy_file_loader.unparseFromJs(js_content_bundled)
merge back the string contents of my_file_bundled to build_results.outputFiles,
and then write the outputs to the filesystem using the "fs"!writeOutputFiles utility function.
a generic esbuild loader.
How the loader works:
To put it simply, a subclass of GenericLoader performs the following steps in order:
content
.content
.esbuild
for bundling and transformation of the import statements.content
.Loader usage example:
Here is how you would typically use a subclass of the GenericLoader:
onLoad
result, or use it as an entrypoint viastdin
.my_file_bundled
tobuild_results.outputFiles
, and then write the outputs to the filesystem using the "fs"!writeOutputFiles utility function.