1
1
import glob from "fast-glob" ;
2
2
import * as fs from "node:fs" ;
3
3
import * as path from "node:path" ;
4
+ import { fileURLToPath } from "node:url" ;
4
5
5
- const dir = path . parse ( import . meta. url . replace ( "file://" , "" ) ) . dir ;
6
+ const dir = path . parse ( fileURLToPath ( import . meta. url ) ) . dir ;
6
7
7
8
export type Project = {
8
9
/**
@@ -114,7 +115,7 @@ export type Files = Record<
114
115
115
116
export function getProjectFiles ( project : Project ) : Files {
116
117
const dir = path . resolve ( "../../" , project . pathFromRoot ) ;
117
- const files = glob . globSync ( dir + "/**/*" , {
118
+ const files = glob . globSync ( replacePathSepToSlash ( dir + "/**/*" ) , {
118
119
ignore : [ "**/node_modules/**/*" , "**/dist/**/*" ] ,
119
120
} ) ;
120
121
const passedFiles = Object . fromEntries (
@@ -140,7 +141,11 @@ export function getProjectFiles(project: Project): Files {
140
141
*/
141
142
export function getExampleProjects ( ) : Project [ ] {
142
143
const examples : Project [ ] = glob
143
- . globSync ( path . join ( dir , "../../../examples/**/*/.bnexample.json" ) )
144
+ . globSync (
145
+ replacePathSepToSlash (
146
+ path . join ( dir , "../../../examples/**/*/.bnexample.json" )
147
+ )
148
+ )
144
149
. map ( ( configPath ) => {
145
150
const config = JSON . parse ( fs . readFileSync ( configPath , "utf-8" ) ) ;
146
151
const directory = path . dirname ( configPath ) ;
@@ -162,9 +167,8 @@ export function getExampleProjects(): Project[] {
162
167
. split ( path . sep ) ;
163
168
164
169
const group = {
165
- pathFromRoot : path . relative (
166
- path . resolve ( "../../" ) ,
167
- path . join ( directory , ".." )
170
+ pathFromRoot : replacePathSepToSlash (
171
+ path . relative ( path . resolve ( "../../" ) , path . join ( directory , ".." ) )
168
172
) ,
169
173
// remove optional 01- prefix
170
174
slug : groupDir . replace ( / ^ \d { 2 } - / , "" ) ,
@@ -174,7 +178,9 @@ export function getExampleProjects(): Project[] {
174
178
const project = {
175
179
projectSlug,
176
180
fullSlug : `${ group . slug } /${ projectSlug } ` ,
177
- pathFromRoot : path . relative ( path . resolve ( "../../" ) , directory ) ,
181
+ pathFromRoot : replacePathSepToSlash (
182
+ path . relative ( path . resolve ( "../../" ) , directory )
183
+ ) ,
178
184
config,
179
185
title,
180
186
group,
@@ -196,3 +202,13 @@ export function getExampleProjects(): Project[] {
196
202
// });
197
203
return examples ;
198
204
}
205
+
206
+ export function replacePathSepToSlash ( path : string ) {
207
+ const isExtendedLengthPath = path . startsWith ( "\\\\?\\" ) ;
208
+
209
+ if ( isExtendedLengthPath ) {
210
+ return path ;
211
+ }
212
+
213
+ return path . replace ( / \\ / g, "/" ) ;
214
+ }
0 commit comments