From 51a0605b82e6fc782ad50c61619272aeec800957 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 1 Aug 2024 01:49:14 +0200 Subject: [PATCH 1/2] fix(vite-plugin-ssr-css): handle css virtual module via `ssrLoadModule` (#589) --- packages/ssr-css/src/collect.ts | 9 +++++++-- packages/ssr-css/src/plugin.ts | 14 +++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/packages/ssr-css/src/collect.ts b/packages/ssr-css/src/collect.ts index ab736edd4..6c29160db 100644 --- a/packages/ssr-css/src/collect.ts +++ b/packages/ssr-css/src/collect.ts @@ -8,8 +8,13 @@ export async function collectStyle(server: ViteDevServer, entries: string[]) { const urls = await collectStyleUrls(server, entries); const codes = await Promise.all( urls.map(async (url) => { - const res = await server.transformRequest(url + "?direct"); - return [`/* [collectStyle] ${url} */`, res?.code]; + const res = url.includes("\0") + ? await server.ssrLoadModule(url).then((m) => m["default"]) + : await server + .transformRequest(url + "?direct") + .then((result) => result?.code); + + return [`/* [collectStyle] ${url} */`, res]; }), ); return codes.flat().filter(Boolean).join("\n\n"); diff --git a/packages/ssr-css/src/plugin.ts b/packages/ssr-css/src/plugin.ts index 1628d60c3..6044ca347 100644 --- a/packages/ssr-css/src/plugin.ts +++ b/packages/ssr-css/src/plugin.ts @@ -32,12 +32,16 @@ export function vitePluginSsrCss(pluginOpts: { entries: string[] }): Plugin { }, async load(id, _options) { if (id.startsWith("\0" + VIRTUAL_ENTRY)) { - const url = new URL(id.slice(1), "https://test.local"); - let code = await collectStyle(server, pluginOpts.entries); - if (!url.searchParams.has("direct")) { - code = `export default ${JSON.stringify(code)}`; + try { + const url = new URL(id.slice(1), "https://test.local"); + let code = await collectStyle(server, pluginOpts.entries); + if (!url.searchParams.has("direct")) { + code = `export default ${JSON.stringify(code)}`; + } + return code; + } catch (e) { + console.error(e); } - return code; } return; }, From fd4b2d6fa3be85ea6929ffcffc32e6645b11785a Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Thu, 1 Aug 2024 09:04:05 +0900 Subject: [PATCH 2/2] chore: release vite-plugin-ssr-css v0.0.1 (#593) --- .github/workflows/pkg-pr-new.yml | 3 ++- packages/ssr-css/CHANGELOG.md | 4 ++++ packages/ssr-css/package.json | 5 ++--- packages/ssr-css/src/collect.ts | 2 ++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pkg-pr-new.yml b/.github/workflows/pkg-pr-new.yml index fe4dba734..be182fdb0 100644 --- a/.github/workflows/pkg-pr-new.yml +++ b/.github/workflows/pkg-pr-new.yml @@ -15,4 +15,5 @@ jobs: packages/react-server \ packages/react-server-next \ packages/transforms \ - packages/vite-plugin-ssr-middleware + packages/vite-plugin-ssr-middleware \ + packages/vite-plugin-ssr-css diff --git a/packages/ssr-css/CHANGELOG.md b/packages/ssr-css/CHANGELOG.md index 6063eba2c..f9b7bca5a 100644 --- a/packages/ssr-css/CHANGELOG.md +++ b/packages/ssr-css/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## v0.0.1 (2024-07-31) + +- fix: handle css virtual module via `ssrLoadModule` ([#589](https://github.com/hi-ogawa/vite-plugins/pull/589)) + ## v0.0.0 - fix: invalidate virtual module on each direct request ([#304](https://github.com/hi-ogawa/vite-plugins/pull/304)) diff --git a/packages/ssr-css/package.json b/packages/ssr-css/package.json index aa7024841..0f8f60f97 100644 --- a/packages/ssr-css/package.json +++ b/packages/ssr-css/package.json @@ -1,6 +1,6 @@ { "name": "@hiogawa/vite-plugin-ssr-css", - "version": "0.0.0", + "version": "0.0.1", "homepage": "https://github.com/hi-ogawa/vite-plugins/tree/main/packages/ssr-css", "repository": { "type": "git", @@ -19,8 +19,7 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "prepack": "tsup --clean", - "release": "pnpm publish --no-git-checks --access public" + "prepack": "tsup --clean" }, "peerDependencies": { "vite": "*" diff --git a/packages/ssr-css/src/collect.ts b/packages/ssr-css/src/collect.ts index 6c29160db..d44c70331 100644 --- a/packages/ssr-css/src/collect.ts +++ b/packages/ssr-css/src/collect.ts @@ -3,6 +3,8 @@ import type { ViteDevServer } from "vite"; // style collection // https://github.com/remix-run/remix/blob/1a8a5216106bd8c3073cc3e5e5399a32c981db74/packages/remix-dev/vite/styles.ts // https://github.com/vikejs/vike/blob/f9a91f3c47cab9c2871526ef714cc0f87a41fda0/vike/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.ts +// https://github.com/sveltejs/kit/blob/998edb26d431e4ee4d3b4dc792a86960a85a5b45/packages/kit/src/exports/vite/dev/index.js#L186-L219 +// https://github.com/withastro/astro/blob/6aaeec5034cabf6a83e1949ec1ca8f50e7978cc1/packages/astro/src/vite-plugin-astro-server/css.ts export async function collectStyle(server: ViteDevServer, entries: string[]) { const urls = await collectStyleUrls(server, entries);