-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
feat: Allow configuring cache directory for @sveltejs/enhanced-img #14991
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
Changes from 2 commits
da708ef
b96cdf4
cc04000
b485d7d
96b6d7a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| --- | ||
| '@sveltejs/enhanced-img': minor | ||
| --- | ||
|
|
||
| feat: Allow configuring cache directory | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,10 +4,16 @@ import { imagetools } from 'vite-imagetools'; | |
| import { image_plugin } from './vite-plugin.js'; | ||
|
|
||
| /** | ||
| * @typedef {{cache?: CacheOptions}} EnhancedImageOptions | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. these should use the types exported by vite-imagetools so that we don't have to update here if they add new options
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You're right - I've originally opted for a custom interface following the discussion in the linked issue. But looking at it now, using vite-imagetools's types makes more sense. I'll update the PR accordingly. |
||
| * @typedef {{enabled?: boolean, directory?: string, retention?: number}} CacheOptions | ||
| */ | ||
|
|
||
| /** | ||
| * @param { EnhancedImageOptions } opts | ||
| * @returns {import('vite').Plugin[]} | ||
| */ | ||
| export function enhancedImages() { | ||
| const imagetools_instance = imagetools_plugin(); | ||
| export function enhancedImages(opts = {}) { | ||
| const imagetools_instance = imagetools_plugin(opts); | ||
| return !process.versions.webcontainer | ||
| ? [image_plugin(imagetools_instance), imagetools_instance] | ||
| : []; | ||
|
|
@@ -25,7 +31,11 @@ const fallback = { | |
| '.webp': 'png' | ||
| }; | ||
|
|
||
| function imagetools_plugin() { | ||
| /** | ||
| * @param { EnhancedImageOptions } opts | ||
| * @returns {import('vite').Plugin} | ||
| */ | ||
| function imagetools_plugin(opts = {}) { | ||
| /** @type {Partial<import('vite-imagetools').VitePluginOptions>} */ | ||
| const imagetools_opts = { | ||
| defaultDirectives: async ({ pathname, searchParams: qs }, metadata) => { | ||
|
|
@@ -49,6 +59,14 @@ function imagetools_plugin() { | |
| namedExports: false | ||
| }; | ||
|
|
||
| if (opts.cache) { | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is there a reason to not pass the opts to imagetools directly? |
||
| imagetools_opts.cache = { | ||
| enabled: opts.cache.enabled, | ||
| dir: opts.cache.directory, | ||
| retention: opts.cache.retention | ||
| }; | ||
| } | ||
|
|
||
| // TODO: should we make formats or sizes configurable besides just letting people override defaultDirectives? | ||
| // TODO: generate img rather than picture if only a single format is provided | ||
| // by resolving the directives for the URL in the preprocessor | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.