@@ -6,17 +6,16 @@ import * as acorn from 'acorn';
6
6
7
7
import { svelte , env , setupHtmlEqual } from './helpers.js' ;
8
8
9
- const cache = { } ;
10
-
11
9
let showCompiledCode = false ;
12
10
let compileOptions = null ;
13
11
14
12
require . extensions [ '.html' ] = function ( module , filename ) {
15
13
const options = Object . assign ( { filename } , compileOptions ) ;
16
- const code = cache [ filename ] || ( cache [ filename ] = svelte . compile ( fs . readFileSync ( filename , 'utf-8' ) , options ) . code ) ;
14
+ const { code } = svelte . compile ( fs . readFileSync ( filename , 'utf-8' ) , options ) ;
15
+
17
16
if ( showCompiledCode ) console . log ( addLineNumbers ( code ) ) ; // eslint-disable-line no-console
18
17
19
- return module . _compile ( code , filename ) ;
18
+ return module . _compile ( code . replace ( 'svelte/shared.js' , path . resolve ( 'shared.js' ) ) , filename ) ;
20
19
} ;
21
20
22
21
function addLineNumbers ( code ) {
@@ -30,7 +29,9 @@ function addLineNumbers ( code ) {
30
29
31
30
function loadConfig ( dir ) {
32
31
try {
33
- return require ( `./generator/${ dir } /_config.js` ) . default ;
32
+ const resolved = require . resolve ( `./generator/${ dir } /_config.js` ) ;
33
+ delete require . cache [ resolved ] ;
34
+ return require ( resolved ) . default ;
34
35
} catch ( err ) {
35
36
if ( err . code === 'E_NOT_FOUND' ) {
36
37
return { } ;
@@ -43,7 +44,7 @@ function loadConfig ( dir ) {
43
44
describe ( 'generate' , ( ) => {
44
45
before ( setupHtmlEqual ) ;
45
46
46
- fs . readdirSync ( 'test/generator' ) . forEach ( dir => {
47
+ function runTest ( dir , standalone ) {
47
48
if ( dir [ 0 ] === '.' ) return ;
48
49
49
50
const config = loadConfig ( dir ) ;
@@ -53,6 +54,7 @@ describe( 'generate', () => {
53
54
54
55
showCompiledCode = config . show ;
55
56
compileOptions = config . compileOptions || { } ;
57
+ compileOptions . standalone = standalone ;
56
58
57
59
try {
58
60
const source = fs . readFileSync ( `test/generator/${ dir } /main.html` , 'utf-8' ) ;
@@ -78,7 +80,9 @@ describe( 'generate', () => {
78
80
throw err ;
79
81
}
80
82
81
- cache [ path . resolve ( `test/generator/${ dir } /main.html` ) ] = code ;
83
+ Object . keys ( require . cache ) . filter ( x => x . endsWith ( '.html' ) ) . forEach ( file => {
84
+ delete require . cache [ file ] ;
85
+ } ) ;
82
86
83
87
let SvelteComponent ;
84
88
@@ -117,5 +121,17 @@ describe( 'generate', () => {
117
121
throw err ;
118
122
} ) ;
119
123
} ) ;
124
+ }
125
+
126
+ describe ( 'standalone' , ( ) => {
127
+ fs . readdirSync ( 'test/generator' ) . forEach ( dir => {
128
+ runTest ( dir , true ) ;
129
+ } ) ;
130
+ } ) ;
131
+
132
+ describe ( 'non-standalone' , ( ) => {
133
+ fs . readdirSync ( 'test/generator' ) . forEach ( dir => {
134
+ runTest ( dir , false ) ;
135
+ } ) ;
120
136
} ) ;
121
137
} ) ;
0 commit comments