nuxt-og-image
Version:
Enlightened OG Image generation for Nuxt.
36 lines (35 loc) • 1.24 kB
JavaScript
import { createConsola } from "consola";
import { execa } from "execa";
import playwrightCore from "playwright-core";
let installedChromium = false;
let installChromiumPromise;
export async function createBrowser() {
if (installChromiumPromise)
await installChromiumPromise;
if (!installedChromium) {
installChromiumPromise = new Promise((_resolve) => {
const logger = createConsola().withTag("Nuxt OG Image");
logger.info("Installing Chromium install for og:image generation...");
const installChromeProcess = execa("npx", ["playwright", "install", "chromium"], {
stdio: "inherit"
});
installChromeProcess.stderr?.pipe(process.stderr);
new Promise((resolve) => {
installChromeProcess.on("exit", (e) => {
if (e !== 0)
logger.error("Failed to install Playwright dependency for og:image generation. Trying anyway...");
resolve(true);
});
}).then(() => {
installChromeProcess.kill();
logger.info("Installed Chromium install for og:image generation.");
_resolve();
});
}).then(() => {
installedChromium = true;
});
}
return await playwrightCore.chromium.launch({
headless: true
});
}