unpic icon indicating copy to clipboard operation
unpic copied to clipboard

Core as a set of plugins

Open benmccann opened this issue 2 years ago • 3 comments

We just launched @sveltejs/enhanced-img for static images included in the user's project and are now trying to figure out how to handle images from CDNs. I had proposed using @unpic/svelte as our solution there. However, an objection came up that it includes transformers and parsers for all CDNs instead of just the one that the user needs.

It would be nice if we could make core a set of plugins where the user could register just the CDNs they're going to use. Optionally, we could provide a convenience method which registers all providers.

It looks like including the library currently adds about 38 kB unminified and we could probably cut that down a fair amount.

https://github.com/ascorbic/unpic/issues/82 is a bit related to this idea as well

If there's some level of interest, I may be able to contribute to this

benmccann avatar Nov 14 '23 22:11 benmccann

If you need just the transformers you can use unpic, which doesn't have any of the component stuff. The idea for Unpic has always been that it's zero-config. However an optional way of importing the CDNs individually could be a good one

ascorbic avatar Nov 15 '23 12:11 ascorbic

We do need the component. Maybe we could have just the Svelte component need to be configured? Or maybe it could be exported from the package twice? E.g. import { Image } from "@unpic/svelte"; could give a version which needs to be configured and import { Image } from "@unpic/svelte/full"; could give a version that contains all the providers already configured

(For what it's worth, I just watched this talk and saw at 10m that Angular requires you to configure a provider)

benmccann avatar Nov 15 '23 14:11 benmccann

So I'm still not sold on the actual API within components, but I am publishing a version of the unpic lib with subpath exports for all transformers in the form unpic/transformers/cloudinary etc, and a separate export for unpic/detect. This means you can do detection without the barrel export, and can load the CDNs as needed, and can be a first step to working this out.

ascorbic avatar Nov 15 '23 19:11 ascorbic