import es-module directory conveniently when export es-module in an environment that support es-module.
note that the env need to meet two conditionsοΌ
-
node
-
support es-module (such as ts)
- if useful, could you please give me a βοΈstarβ on github.
Notice: this takes typescript as an example.
- directory eg:
root
|ββmain.ts
βββrouter
|βββindex.ts
|βββlist
| |βββ listInter
| | ββββnewList.ts
| |βββ userList.ts
| ββββ news.ts
|βββmain
| ββββ mainInter
| ββββ domain.ts
ββββuser
ββββ priority.ts
- router/index.ts
import importEsmDirectory from 'import-esm-directory';
export default importEsmDirectory(module);
- import the directory in main.ts
import routerDirectoryPromise from './router';
routerDirectoryPromise.then((esmDirectory) => {
console.log(esmDirectory);
})
/* output
{
list: {
listInter: {
newlist: [Object]
},
news: {},
userList: {
index: [Object]
}
},
main: {
mainInter: {
domain: [Object]
}
},
user: {
priority: [Function]
}
}
*/
- router/index.ts
import {importParseDirectory} from 'import-esm-directory';
export default importParseDirectory(module);
- import the directory in main.ts
import routerDirectoryPromise from './router';
routerDirectoryPromise.then((esmDirectory) => {
console.log(esmDirectory)
})
/* output
{
deepModule: {
list: {
listInter: [Object],
news: {},
userList: [Object]
},
main: {
mainInter: [Object]
},
user: {
priority: [Function]
}
},
layerModule: {
'list/listInter/newlist': {
name: 'newslist'
},
'list/news': {},
'list/userList': {
index: [Object]
},
'main/mainInter/domain': {
name: 'domain'
},
'user/priority': [Function]
}
}
*/
- for specific example: koa-ts-node
- the separator of path may be different on windows.
- because that this use dynamic import of es6, so the package returns a promise object