11import MagicString from 'magic-string' ;
22import type { PreprocessorGroup } from 'svelte/compiler' ;
3+ import { parse } from 'svelte-parse-markup' ;
34import { findStaticImports } from 'mlly' ;
4- import { genObjectFromRaw } from 'knitwork' ;
5+ import { genObjectFromValues } from 'knitwork' ;
56import { loadAliases } from './utils/alias' ;
67import type { CssModule } from './utils/css-module' ;
78import { getCssModule , getCssModuleImports } from './utils/css-module' ;
@@ -11,6 +12,22 @@ import { getCssModule, getCssModuleImports } from './utils/css-module';
1112export function cssModules ( ) : PreprocessorGroup {
1213 const cssModuleCache = new Map < string , CssModule [ ] > ( ) ;
1314 return {
15+ markup ( { content, filename } ) {
16+ const ast = parse ( content ) ;
17+
18+ /* if css is empty, add style tag */
19+ if ( ast . css == null ) {
20+ const s = new MagicString ( content ) ;
21+ s . append ( '\n<style>\n</style>\n' ) ;
22+ return {
23+ code : s . toString ( ) ,
24+ map : s . generateMap ( {
25+ source : filename ,
26+ includeContent : true ,
27+ } ) ,
28+ } ;
29+ }
30+ } ,
1431 async script ( { content, filename } ) {
1532 const aliases = await loadAliases ( ) ;
1633 const s = new MagicString ( content ) ;
@@ -21,7 +38,7 @@ export function cssModules(): PreprocessorGroup {
2138 ) ;
2239
2340 /* find css/scss module imports */
24- const cssModuleImpots
41+ const cssModuleImports
2542 = await getCssModuleImports ( {
2643 imports,
2744 aliases,
@@ -30,13 +47,13 @@ export function cssModules(): PreprocessorGroup {
3047
3148 /* transform css/scss modules */
3249 const cssModules = [ ] ;
33- for ( const cmi of cssModuleImpots ) {
50+ for ( const cmi of cssModuleImports ) {
3451 const cssModule = await getCssModule ( cmi ) ;
3552 cssModules . push ( cssModule ) ;
3653
3754 /* generate css module exports */
38- const obj = genObjectFromRaw ( cssModule . exports ) ;
39- const gen = `const ${ cmi . defaultImport } = ${ obj } ;` ;
55+ const obj = genObjectFromValues ( cssModule . exports ) ;
56+ const gen = `const ${ cmi . defaultImport } = ${ obj } ;\n ` ;
4057 s . overwrite ( cmi . imp . start , cmi . imp . end , gen ) ;
4158 }
4259 if ( filename != null ) {
0 commit comments