Support Vite 3.1 (#4752)

* Support Vite 3.1

* Update ~3.1.0

* Revert Vite bump
This commit is contained in:
Bjorn Lu 2022-09-15 00:01:50 +08:00 committed by GitHub
parent c5e134d035
commit 1bedb9427e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 11 deletions

View file

@ -0,0 +1,5 @@
---
'astro': patch
---
Support Vite 3.1

View file

@ -340,17 +340,17 @@ ${source}
throw err;
}
},
async handleHotUpdate(this: PluginContext, context) {
async handleHotUpdate(context) {
if (context.server.config.isProduction) return;
const compileProps: CompileProps = {
config,
filename: context.file,
moduleId: context.file,
source: await context.read(),
transformStyle: createTransformStyles(styleTransformer, context.file, true, this),
transformStyle: createTransformStyles(styleTransformer, context.file, true),
};
const compile = () => cachedCompilation(compileProps);
return handleHotUpdate.call(this, context, {
return handleHotUpdate(context, {
config,
logging,
compile,

View file

@ -30,14 +30,8 @@ export function createTransformStyles(
viteStyleTransformer: ViteStyleTransformer,
filename: string,
ssr: boolean,
pluginContext: PluginContext
pluginContext?: PluginContext
): TransformStyle {
// handleHotUpdate doesn't have `addWatchFile` used by transformStyleWithVite.
// TODO, refactor, why is this happening *here* ?
if (!pluginContext.addWatchFile) {
pluginContext.addWatchFile = () => {};
}
const normalizedID = getNormalizedIDForPostCSS(filename);
return async function (styleSource, lang) {

View file

@ -46,7 +46,10 @@ export function createTransformStyleWithViteFn(
viteDevServer?.moduleGraph.ensureEntryFromUrl(styleId, ssr, false);
const transformResult = await transformCss.call(this, source, styleId, ssr);
// This function could be called in a custom Vite hook like `handleHotUpdate`
// which doesn't have a context
const ctx = this ?? { addWatchFile: () => {} };
const transformResult = await transformCss.call(ctx, source, styleId, ssr);
// NOTE: only `code` and `map` are returned by vite:css
const { code, map } = transformResult;