@bishwenduk029/fringe
Version:
Edge rendered React and GraphQL
2 lines (1 loc) • 1.42 kB
JavaScript
import{createRequire as u}from"module";var a=u(import.meta.url);import{resolve as s}from"path";import n from"fs";import l from"path";var i=class{async setup(){let e=await n.promises.readdir(l.resolve(this.rootDir,this.pageSourcePath),"utf-8"),r=JSON.parse(await n.promises.readFile(l.resolve(this.rootDir,"package.json"),"utf8")),t=Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]));return{modulePaths:e,pkg:r,deps:t}}};import m from"module";var{builtinModules:h}=m,g=class extends i{constructor(e){super();this.pageSourcePath="src/pages";this.pageBuildPath="dist";this.logger=e.logger,this.service=e.service,this.rootDir=e.rootDir}async build(){let e=Date.now(),r=this.rootDir,{modulePaths:t,deps:c}=await this.setup(),o=t;if(!o||o.length===0){this.logger.info({latency:Date.now()-e},"Page build skipped; no page entry points found.");return}this.logger.info("Starting server page build"),await this.service.build({bundle:!0,define:{"process.env.NODE_ENV":"production"},logLevel:"error",entryPoints:[...o.map(d=>s(r,`${this.pageSourcePath}/${d}/index.tsx`))],external:[...h,...c],format:"esm",incremental:!1,minify:!1,outbase:s(r),outdir:s(r,this.pageBuildPath),platform:"node",resolveExtensions:[".tsx",".jsx"],sourcemap:!1,splitting:!1,treeShaking:!0,write:!0}),this.logger.info({latency:Date.now()-e},"Finished server pages build")}};export{g as ServerPagesBuilder};