Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for js.Build/esbuild "loader" option #12879

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

BrianLeishman
Copy link

fix: #9978

related: #7697

related pr: stackkrocket@bc95ebc

I actually don't think the related PR is the correct way to go about this, since it only adds support for SVGs and adds it in an opinionated way. esbuild doesn't have a default loader for SVGs, and some libraries might choose to import the SVGs as something other than text, like a File object, base64, etc.

This PR adds support to specify the loader types for multiple extensions, using the same words as the official esbuild cli

https://esbuild.github.io/api/#loader
https://github.com/evanw/esbuild/blob/d34e79e2a998c21bb71d57b92b0017ca11756912/internal/config/config.go#L208

So here, more than just SVG support can be added, such as .ttf files (required by ckeditor, for example).

Usage example:

{{ $js := resources.Get `ts/index.ts` }}
{{ $loaders := dict `.svg` `text`  `.ttf` `text` }}
{{ $opts := dict `target` `es2016`  `minify` true  `sourcemap` `external`  `targetPath` `js/app.min.js`  `loaders` $loaders }}
{{ $js = $js | js.Build $opts | fingerprint }}
<script src="{{ $js.RelPermalink }}"></script>

I would be happy to add any needed tests or documentation for this, if it were to be accepted to move forward with.

@BrianLeishman BrianLeishman changed the title add support for esbuild loaders by extension Add support for js.Build/esbuild "loader" option Sep 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Load SVG files with esbuild's api.LoaderText with in js.Build
1 participant