simport
Version:
import like require but async
82 lines (58 loc) • 2.46 kB
Markdown
Use [dynamic imports](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Dynamic_Imports) just like plain old [require](https://nodejs.org/api/esm.html#esm_require).
With simport you can:
- get `require`
- get `__filename` or `__dirname`
- load json
- avoid extensions
- avoid destructuring default
- pass `simport` into functions like [tryCatch](https://github.com/coderaiser/try-to-catch)
- use [absolute path in windows](https://github.com/nodejs/node/issues/31710#issuecomment-587434048)
`npm i simport`
Commonjs:
```js
const {createSimport} = require('simport');
const simport = createSimport(__filename);
```
ESM:
```js
import {createSimport} from 'simport';
const simport = createSimport(import.meta.url);
// you can import json
await simport('./package.json');
// returns
({
name: simport,
});
// you can avoid .js extension
await simport('./server');
// you can avoid destructure default
const validate = await simport('./validate');
// same as
const {default: validate2} = await import('./validate.js');
```
```js
import {createCommons} from 'simport';
const {
__filename,
__dirname,
require,
} = createCommons(import.meta.url);
// now you have plain old CommonJS variables
```
MIT
[]: https://img.shields.io/npm/v/simport.svg?style=flat
[]: https://travis-ci.com/coderaiser/simport.svg?branch=master
[]: https://img.shields.io/david/coderaiser/simport.svg?style=flat
[]: https://img.shields.io/badge/license-MIT-317BF9.svg?style=flat
[]: https://npmjs.org/package/simport "npm"
[]: https://travis-ci.com/coderaiser/simport "Build Status"
[]: https://david-dm.org/coderaiser/simport "Dependency Status"
[]: https://tldrlegal.com/license/mit-license "MIT License"
[]: https://coveralls.io/github/coderaiser/simport?branch=master
[]: https://coveralls.io/repos/coderaiser/simport/badge.svg?branch=master&service=github