@@ -2,17 +2,16 @@ import path from 'path';
2
2
import fs from 'fs' ;
3
3
import type { RuleModule } from '../../src/types.js' ;
4
4
5
- const __dirname = path . dirname ( new URL ( import . meta. url ) . pathname ) ;
5
+ const rulesLibRootURL = new URL ( '../../src/rules/' , import . meta. url ) ;
6
6
7
7
/**
8
8
* Get the all rules
9
9
* @returns {Array } The all rules
10
10
*/
11
11
async function readRules ( ) {
12
- const rulesLibRoot = path . resolve ( __dirname , '../../src/rules' ) ;
13
12
const rules : RuleModule [ ] = [ ] ;
14
13
for ( const name of iterateTsFiles ( ) ) {
15
- const module = await import ( path . join ( rulesLibRoot , name ) ) ;
14
+ const module = await import ( new URL ( name , rulesLibRootURL ) . href ) ;
16
15
const rule : RuleModule = module && module . default ;
17
16
if ( ! rule || typeof rule . create !== 'function' ) {
18
17
continue ;
@@ -27,19 +26,18 @@ export const rules = await readRules();
27
26
28
27
/** Iterate ts files */
29
28
function * iterateTsFiles ( ) {
30
- const rulesLibRoot = path . resolve ( __dirname , '../../src/rules' ) ;
31
- const files = fs . readdirSync ( rulesLibRoot ) ;
29
+ const files = fs . readdirSync ( rulesLibRootURL ) ;
32
30
33
31
while ( files . length ) {
34
32
const file = files . shift ( ) ! ;
35
33
if ( file . endsWith ( '.ts' ) ) {
36
34
yield file ;
37
35
continue ;
38
36
}
39
- const filePath = path . join ( rulesLibRoot , file ) ;
40
- if ( ! fs . statSync ( filePath ) . isDirectory ( ) ) {
37
+ const filePathURL = new URL ( file , rulesLibRootURL ) ;
38
+ if ( ! fs . statSync ( filePathURL ) . isDirectory ( ) ) {
41
39
continue ;
42
40
}
43
- files . unshift ( ...fs . readdirSync ( filePath ) . map ( ( n ) => path . join ( file , n ) ) ) ;
41
+ files . unshift ( ...fs . readdirSync ( filePathURL ) . map ( ( n ) => path . join ( file , n ) ) ) ;
44
42
}
45
43
}
0 commit comments