diff --git a/package.json b/package.json index f7f157d..fed6c1f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dequanto", - "version": "0.1.30", + "version": "0.1.31", "author": { "name": "Alex Kit", "email": "alex.kit@atmajs.com" diff --git a/src/utils/$dependency.ts b/src/utils/$dependency.ts index 4d9677b..317be34 100644 --- a/src/utils/$dependency.ts +++ b/src/utils/$dependency.ts @@ -15,5 +15,18 @@ export namespace $dependency { //#endif } + export function dirname () { + if (typeof __dirname === 'undefined') { + return __dirname; + } + //#if (CJS) + throw new Error('__dirname is not defined in CommonJS environment'); + //#endif + + //#if (ESM) + // @ts-ignore: Conditional import + return import.meta.dirname; + //#endif + } } diff --git a/src/utils/$path.ts b/src/utils/$path.ts index 0b5475e..c6e4fc7 100644 --- a/src/utils/$path.ts +++ b/src/utils/$path.ts @@ -1,6 +1,7 @@ import { class_Uri } from 'atma-utils'; import { $config } from './$config'; import { env } from 'atma-io'; +import { $dependency } from './$dependency'; export namespace $path { let root: string = null; @@ -80,11 +81,12 @@ export namespace $path { return class_Uri.combine('file://' + cwd, base); } - let uri = new class_Uri('file://' + __dirname + '/'); + let dirname = $dependency.dirname(); + let uri = new class_Uri('file://' + dirname + '/'); while (true) { let dir = getDirName(uri.path); if (!dir || dir === '/') { - throw new Error(`Root path not resolved: ${__dirname}`); + throw new Error(`Root path not resolved: ${dirname}`); } if (dir === 'lib' || dir === 'src') { uri = uri.cdUp();