@@ -61,29 +61,16 @@ function viteScript() {
61
61
* @returns {{ style: import('svelte/compiler').Preprocessor } }
62
62
*/
63
63
function viteStyle ( config = { } ) {
64
- /** @type {CssTransform } */
65
- let transform ;
64
+ /** @type {Promise<CssTransform> | CssTransform } */
65
+ let cssTransform ;
66
66
/** @type {import('svelte/compiler').Preprocessor } */
67
67
const style = async ( { attributes, content, filename = '' } ) => {
68
68
const ext = attributes . lang ? `.${ attributes . lang } ` : '.css' ;
69
69
if ( attributes . lang && ! isCSSRequest ( ext ) ) return ;
70
- if ( ! transform ) {
71
- /** @type {import('vite').ResolvedConfig } */
72
- let resolvedConfig ;
73
- // @ts -expect-error special prop added if running in v-p-s
74
- if ( style . __resolvedConfig ) {
75
- // @ts -expect-error
76
- resolvedConfig = style . __resolvedConfig ;
77
- } else if ( isResolvedConfig ( config ) ) {
78
- resolvedConfig = config ;
79
- } else {
80
- resolvedConfig = await resolveConfig (
81
- config ,
82
- process . env . NODE_ENV === 'production' ? 'build' : 'serve'
83
- ) ;
84
- }
85
- transform = getCssTransformFn ( resolvedConfig ) ;
70
+ if ( ! cssTransform ) {
71
+ cssTransform = createCssTransform ( style , config ) . then ( ( t ) => ( cssTransform = t ) ) ;
86
72
}
73
+ const transform = await cssTransform ;
87
74
const suffix = `${ lang_sep } ${ ext } ` ;
88
75
const moduleId = `${ filename } ${ suffix } ` ;
89
76
const { code, map, deps } = await transform ( content , moduleId ) ;
@@ -102,12 +89,27 @@ function viteStyle(config = {}) {
102
89
}
103
90
104
91
/**
105
- * @param {import('vite').ResolvedConfig } config
106
- * @returns {CssTransform }
92
+ * @param {import('svelte/compiler').Preprocessor } style
93
+ * @param {import('vite').ResolvedConfig | import('vite').InlineConfig } config
94
+ * @returns {Promise<CssTransform> }
107
95
*/
108
- function getCssTransformFn ( config ) {
96
+ async function createCssTransform ( style , config ) {
97
+ /** @type {import('vite').ResolvedConfig } */
98
+ let resolvedConfig ;
99
+ // @ts -expect-error special prop added if running in v-p-s
100
+ if ( style . __resolvedConfig ) {
101
+ // @ts -expect-error
102
+ resolvedConfig = style . __resolvedConfig ;
103
+ } else if ( isResolvedConfig ( config ) ) {
104
+ resolvedConfig = config ;
105
+ } else {
106
+ resolvedConfig = await resolveConfig (
107
+ config ,
108
+ process . env . NODE_ENV === 'production' ? 'build' : 'serve'
109
+ ) ;
110
+ }
109
111
return async ( code , filename ) => {
110
- return preprocessCSS ( code , filename , config ) ;
112
+ return preprocessCSS ( code , filename , resolvedConfig ) ;
111
113
} ;
112
114
}
113
115
0 commit comments