@@ -179,7 +179,6 @@ export function cssPlugin(config: ResolvedConfig): Plugin {
179
179
tryIndex : false ,
180
180
extensions : [ ]
181
181
} )
182
- const atImportResolvers = createCSSResolvers ( config )
183
182
184
183
return {
185
184
name : 'vite:css' ,
@@ -233,14 +232,7 @@ export function cssPlugin(config: ResolvedConfig): Plugin {
233
232
modules,
234
233
deps,
235
234
map
236
- } = await compileCSS (
237
- id ,
238
- raw ,
239
- config ,
240
- urlReplacer ,
241
- atImportResolvers ,
242
- server
243
- )
235
+ } = await compileCSS ( id , raw , config , urlReplacer )
244
236
if ( modules ) {
245
237
moduleCache . set ( id , modules )
246
238
}
@@ -744,13 +736,16 @@ function getCssResolversKeys(
744
736
return Object . keys ( resolvers ) as unknown as Array < keyof CSSAtImportResolvers >
745
737
}
746
738
739
+ const configToAtImportResolvers = new WeakMap <
740
+ ResolvedConfig ,
741
+ CSSAtImportResolvers
742
+ > ( )
743
+
747
744
async function compileCSS (
748
745
id : string ,
749
746
code : string ,
750
747
config : ResolvedConfig ,
751
- urlReplacer : CssUrlReplacer ,
752
- atImportResolvers : CSSAtImportResolvers ,
753
- server ?: ViteDevServer
748
+ urlReplacer ?: CssUrlReplacer
754
749
) : Promise < {
755
750
code : string
756
751
map ?: SourceMapInput
@@ -786,6 +781,12 @@ async function compileCSS(
786
781
let modules : Record < string , string > | undefined
787
782
const deps = new Set < string > ( )
788
783
784
+ let atImportResolvers = configToAtImportResolvers . get ( config ) !
785
+ if ( ! atImportResolvers ) {
786
+ atImportResolvers = createCSSResolvers ( config )
787
+ configToAtImportResolvers . set ( config , atImportResolvers )
788
+ }
789
+
789
790
// 2. pre-processors: sass etc.
790
791
if ( isPreProcessor ( lang ) ) {
791
792
const preProcessor = preProcessors [ lang ]
@@ -880,12 +881,15 @@ async function compileCSS(
880
881
} )
881
882
)
882
883
}
883
- postcssPlugins . push (
884
- UrlRewritePostcssPlugin ( {
885
- replacer : urlReplacer ,
886
- logger : config . logger
887
- } )
888
- )
884
+
885
+ if ( urlReplacer ) {
886
+ postcssPlugins . push (
887
+ UrlRewritePostcssPlugin ( {
888
+ replacer : urlReplacer ,
889
+ logger : config . logger
890
+ } )
891
+ )
892
+ }
889
893
890
894
if ( isModule ) {
891
895
postcssPlugins . unshift (
@@ -1013,6 +1017,24 @@ async function compileCSS(
1013
1017
}
1014
1018
}
1015
1019
1020
+ export interface PreprocessCSSResult {
1021
+ code : string
1022
+ map ?: SourceMapInput
1023
+ modules ?: Record < string , string >
1024
+ deps ?: Set < string >
1025
+ }
1026
+
1027
+ /**
1028
+ * @experimental
1029
+ */
1030
+ export async function preprocessCSS (
1031
+ code : string ,
1032
+ filename : string ,
1033
+ config : ResolvedConfig
1034
+ ) : Promise < PreprocessCSSResult > {
1035
+ return await compileCSS ( filename , code , config )
1036
+ }
1037
+
1016
1038
export async function formatPostcssSourceMap (
1017
1039
rawMap : ExistingRawSourceMap ,
1018
1040
file : string
0 commit comments