1
1
import express from "express" ;
2
2
import { join } from "path" ;
3
3
import { Logger } from "@expressots/core" ;
4
+ import { packageResolver } from "../resolve-render" ;
4
5
5
6
/**
6
7
* Handlebars options
@@ -11,9 +12,9 @@ import { Logger } from "@expressots/core";
11
12
*
12
13
*/
13
14
export type HandlebarsOptions = {
14
- viewsDir ?: string | Array < string > ;
15
15
viewEngine ?: string ;
16
- serverOptions ?: unknown ;
16
+ viewsDir ?: string ;
17
+ partialsDir ?: string ;
17
18
} ;
18
19
19
20
/**
@@ -23,11 +24,16 @@ export type HandlebarsOptions = {
23
24
* @default
24
25
*/
25
26
const HANDLEBARS_DEFAULTS : HandlebarsOptions = {
26
- viewsDir : join ( process . cwd ( ) , "views" ) ,
27
27
viewEngine : "hbs" ,
28
- serverOptions : { } ,
28
+ viewsDir : join ( process . cwd ( ) , "views" ) ,
29
+ partialsDir : join ( process . cwd ( ) , "views/partials" ) ,
29
30
} ;
30
31
32
+ /**
33
+ * Default partials directory
34
+ */
35
+ const DEFAULT_PARTIALS_DIR : string = join ( process . cwd ( ) , "views/partials" ) ;
36
+
31
37
/**
32
38
* Set Handlebars as the view engine
33
39
* @param {express.Application } app - The express application
@@ -40,21 +46,12 @@ export async function setEngineHandlebars(
40
46
const logger = new Logger ( ) ;
41
47
42
48
try {
43
- app . set ( "view engine" , options . viewEngine || ( HANDLEBARS_DEFAULTS . viewEngine as string ) ) ;
44
- app . set ( "views" , options . viewsDir || ( HANDLEBARS_DEFAULTS . viewsDir as string ) ) ;
49
+ const hbs = packageResolver ( "hbs" ) ;
45
50
46
- if ( Array . isArray ( options . viewsDir ) ) {
47
- options . viewsDir . forEach ( ( dir ) => {
48
- app . set ( "views" , dir ) ;
49
- } ) ;
50
- }
51
+ hbs . registerPartials ( options . partialsDir || DEFAULT_PARTIALS_DIR ) ;
51
52
52
- if ( options . serverOptions ) {
53
- app . locals = {
54
- ...app . locals ,
55
- ...( options . serverOptions as Record < string , unknown > ) ,
56
- } ;
57
- }
53
+ app . set ( "view engine" , options . viewEngine || ( HANDLEBARS_DEFAULTS . viewEngine as string ) ) ;
54
+ app . set ( "views" , options . viewsDir || ( HANDLEBARS_DEFAULTS . viewsDir as string ) ) ;
58
55
} catch ( error : unknown ) {
59
56
logger . error ( ( error as Error ) . message , "handlebars-config" ) ;
60
57
}
0 commit comments