-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
38 lines (33 loc) · 975 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { readFileSync } from 'fs'
import { dirname, filename, join } from 'desm'
/**
* like const { name } = require('./package.json')
*/
const requireJson = (metaUrl, file) =>
JSON.parse(readFileSync(join(metaUrl, file)))
/**
* like if (!module.parent)
*/
const isMain = (metaUrl) => filename(metaUrl) === process.argv[1]
/**
* pure function
* import CommonESM = from '@uscreen.de/common-esm'
* const { __dirname, __filename } = new CommonESM(import.meta.url)
*/
function CommonESM(metaUrl) {
const __dirname = dirname(metaUrl)
const __filename = filename(metaUrl)
const __isMain = isMain(metaUrl)
return {
__dirname,
__filename,
__isMain,
dirname: () => dirname(metaUrl),
filename: () => filename(metaUrl),
isMain: () => isMain(metaUrl),
join: (...args) => join(metaUrl, ...args),
requireJson: (file) => requireJson(metaUrl, file)
}
}
export { dirname, filename, join, requireJson, isMain }
export default CommonESM