55// See https://github.com/remix-run/react-router/issues/13078#issuecomment-2863445977
66import fs from 'fs' ;
77import path from 'path' ;
8+ import { createServer } from 'vite' ;
89import { AddonRegistry } from '@plone/registry/addon-registry' ;
910import { createAddonsLoader } from '@plone/registry/create-addons-loader' ;
1011import { createAddonsServerLoader } from '@plone/registry/create-addons-loader-server' ;
1112import { createAddonsStyleLoader } from '@plone/registry/create-addons-styles-loader' ;
1213import { createAddonsLocalesLoader } from '@plone/registry/create-addons-locales-loader' ;
14+ import { PloneRegistryVitePlugin } from '@plone/registry/vite-plugin' ;
15+ import config from '@plone/registry' ;
1316
14- function initPloneRegistryLoaders ( ) {
17+ async function evaluateAddons ( addonsLoaderPath ) {
18+ const projectRootPath = path . resolve ( '.' ) ;
19+
20+ const ploneDir = path . join ( projectRootPath , '.plone' ) ;
21+
22+ const server = await createServer ( {
23+ root : projectRootPath ,
24+ configFile : false ,
25+ server : { middlewareMode : true } ,
26+ plugins : [ PloneRegistryVitePlugin ( ) ] ,
27+ } ) ;
28+
29+ try {
30+ const { default : loader , addonsInfo } =
31+ await server . ssrLoadModule ( addonsLoaderPath ) ;
32+
33+ fs . writeFileSync (
34+ path . join ( ploneDir , 'registry.routes.json' ) ,
35+ JSON . stringify ( loader ( config ) . routes , null , 2 ) ,
36+ ) ;
37+ fs . writeFileSync (
38+ path . join ( ploneDir , 'registry.addonsInfo.json' ) ,
39+ JSON . stringify ( addonsInfo , null , 2 ) ,
40+ ) ;
41+ } finally {
42+ await server . close ( ) ;
43+ }
44+ }
45+
46+ async function initPloneRegistryLoaders ( ) {
1547 const projectRootPath = path . resolve ( '.' ) ;
1648 const { registry, shadowAliases } = AddonRegistry . init ( projectRootPath ) ;
1749
@@ -25,6 +57,9 @@ function initPloneRegistryLoaders() {
2557 registry . getAddons ( ) ,
2658 { tempInProject : true } ,
2759 ) ;
60+
61+ await evaluateAddons ( addonsLoaderPath ) ;
62+
2863 createAddonsServerLoader (
2964 registry . getAddonDependencies ( ) ,
3065 registry . getAddons ( ) ,
0 commit comments