1
+ import { relative } from 'path'
1
2
import generatePkg from '@babel/generator'
2
3
import { parse } from '@babel/parser'
3
4
import traversePkg from '@babel/traverse'
@@ -12,11 +13,15 @@ const traverse = traversePkg.default
12
13
13
14
const files = await glob ( './pages/**/*.js' , { filesOnly : true } )
14
15
16
+ /**
17
+ * @type {import("esbuild").BuildOptions }
18
+ */
15
19
const buildOptions = {
16
20
entryPoints : files ,
17
21
bundle : true ,
18
22
format : 'esm' ,
19
23
jsx : 'automatic' ,
24
+ minify : true ,
20
25
jsxImportSource : 'preact' ,
21
26
loader : { '.js' : 'jsx' } ,
22
27
}
@@ -44,6 +49,11 @@ await esbuild.build({
44
49
const source = await fs . readFile ( args . path , 'utf8' )
45
50
const ast = parse ( source , { sourceType : 'module' , plugins : [ 'jsx' ] } )
46
51
52
+ const relFromRoot = relative ( process . cwd ( ) , args . path )
53
+ const isPage = relFromRoot . startsWith ( 'pages/' )
54
+
55
+ if ( ! isPage ) return
56
+
47
57
const importedDependencies = new Set ( )
48
58
let defaultExportName
49
59
@@ -84,10 +94,10 @@ await esbuild.build({
84
94
if ( defaultExportName ) {
85
95
return {
86
96
contents : `import { hydrate } from "preact"
87
- ${ code }
88
- const pageProps = JSON.parse(document.getElementById("pageProps").textContent)
89
- hydrate(<${ defaultExportName } {...pageProps} />, document.getElementById("app"))
90
- ` ,
97
+ ${ code }
98
+ const pageProps = JSON.parse(document.getElementById("pageProps").textContent)
99
+ hydrate(<${ defaultExportName } {...pageProps} />, document.getElementById("app"))
100
+ ` ,
91
101
loader : 'jsx' ,
92
102
}
93
103
} else {
0 commit comments