refactor: move the copy .wasm build step out of the SSR bundle
This commit is contained in:
parent
175b8e51dc
commit
256b0dab04
3 changed files with 26 additions and 26 deletions
|
@ -4,7 +4,7 @@ import type { ImageService, TransformOptions } from './loaders/index.js';
|
||||||
import type { LoggerLevel } from './utils/logger.js';
|
import type { LoggerLevel } from './utils/logger.js';
|
||||||
import { joinPaths, prependForwardSlash, propsToFilename } from './utils/paths.js';
|
import { joinPaths, prependForwardSlash, propsToFilename } from './utils/paths.js';
|
||||||
import { createPlugin } from './vite-plugin-astro-image.js';
|
import { createPlugin } from './vite-plugin-astro-image.js';
|
||||||
import { copyLibFiles } from './vendor/squoosh/main.js';
|
import { copyWasmFiles } from './vendor/squoosh/copy-wasm.js';
|
||||||
|
|
||||||
export { getImage } from './lib/get-image.js';
|
export { getImage } from './lib/get-image.js';
|
||||||
export { getPicture } from './lib/get-picture.js';
|
export { getPicture } from './lib/get-picture.js';
|
||||||
|
@ -107,7 +107,7 @@ export default function integration(options: IntegrationOptions = {}): AstroInte
|
||||||
},
|
},
|
||||||
'astro:build:done': async ({ dir }) => {
|
'astro:build:done': async ({ dir }) => {
|
||||||
if (resolvedOptions.serviceEntryPoint === '@astrojs/image/squoosh') {
|
if (resolvedOptions.serviceEntryPoint === '@astrojs/image/squoosh') {
|
||||||
await copyLibFiles(_config.output === 'static' ? dir : _buildConfig.server);
|
await copyWasmFiles(_config.output === 'static' ? dir : _buildConfig.server);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_config.output === 'static') {
|
if (_config.output === 'static') {
|
||||||
|
|
24
packages/integrations/image/src/vendor/squoosh/copy-wasm.ts
vendored
Normal file
24
packages/integrations/image/src/vendor/squoosh/copy-wasm.ts
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
import fs from 'node:fs/promises';
|
||||||
|
import path from 'node:path';
|
||||||
|
import { fileURLToPath } from 'node:url';
|
||||||
|
|
||||||
|
export async function copyWasmFiles(dir: URL) {
|
||||||
|
const src = new URL('./', import.meta.url);
|
||||||
|
await copyDir(fileURLToPath(src), fileURLToPath(dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function copyDir(src: string, dest: string) {
|
||||||
|
const itemNames = await fs.readdir(src);
|
||||||
|
await Promise.all(itemNames.map(async (srcName) => {
|
||||||
|
const srcPath = path.join(src, srcName);
|
||||||
|
const destPath = path.join(dest, srcName);
|
||||||
|
const s = await fs.stat(srcPath);
|
||||||
|
if (s.isFile() && /.wasm$/.test(srcPath)) {
|
||||||
|
await fs.mkdir(path.dirname(destPath), { recursive: true });
|
||||||
|
await fs.copyFile(srcPath, destPath);
|
||||||
|
}
|
||||||
|
else if (s.isDirectory()) {
|
||||||
|
await copyDir(srcPath, destPath);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
|
@ -1,8 +1,5 @@
|
||||||
import * as worker from './impl.js';
|
import * as worker from './impl.js';
|
||||||
import type { OutputFormat } from '../../loaders/index.js';
|
import type { OutputFormat } from '../../loaders/index.js';
|
||||||
import path from 'node:path';
|
|
||||||
import fs from 'node:fs/promises';
|
|
||||||
import { fileURLToPath } from 'node:url';
|
|
||||||
|
|
||||||
type RotateOperation = {
|
type RotateOperation = {
|
||||||
type: 'rotate'
|
type: 'rotate'
|
||||||
|
@ -44,24 +41,3 @@ export async function processBuffer(
|
||||||
throw Error(`Unsupported encoding format`)
|
throw Error(`Unsupported encoding format`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function copyLibFiles(dir: URL) {
|
|
||||||
const src = new URL('./', import.meta.url);
|
|
||||||
await copyLibDir(fileURLToPath(src), fileURLToPath(dir));
|
|
||||||
}
|
|
||||||
|
|
||||||
async function copyLibDir(src: string, dest: string) {
|
|
||||||
const itemNames = await fs.readdir(src);
|
|
||||||
await Promise.all(itemNames.map(async (srcName) => {
|
|
||||||
const srcPath = path.join(src, srcName);
|
|
||||||
const destPath = path.join(dest, srcName);
|
|
||||||
const s = await fs.stat(srcPath);
|
|
||||||
if (s.isFile() && /.wasm$/.test(srcPath)) {
|
|
||||||
await fs.mkdir(path.dirname(destPath), { recursive: true });
|
|
||||||
await fs.copyFile(srcPath, destPath);
|
|
||||||
}
|
|
||||||
else if (s.isDirectory()) {
|
|
||||||
await copyLibDir(srcPath, destPath);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue