@textlint/module-interop
v14.3.0
Published
ECMAScript module interop library
Downloads
468,533
Readme
@textlint/module-interop
ECMAScript module interop library.
import .default
from ES module or CommonJS module.
example.mjs
const value = 42;
export default value;
import {moduleInterop} from "@textlint/module-interop";
// Doesn't matter if `require` uses `module.exports` or ES Module `export`
const value = moduleInterop(require("./example"));
console.log(value); // 42
Notes: This library is for common use. This library is not depended on textlint.
Why it is needed?
Some rule modules use export default
.
If you creating rule preset for textlint, you should wrap the required result.
const rule = require("textlint-rule-es-export-default-example");
console.log(rule); // { default: ruleImplementation }
This library resolve this issue by moduleInterop
function.
const {moduleInterop} = require("@textlint/module-interop");
const rule = moduleInterop(require("textlint-rule-es-export-default-example"));
console.log(rule); // ruleImplementation
Install
Install with npm:
npm install @textlint/module-interop
Usage
const {moduleInterop} = require("@textlint/module-interop");
const rule = moduleInterop(require("textlint-rule-example")); // rule implementation
Related
- leebenson/module-interop: ES6 module interop
- Same purpose, but it has different API
- izaakschroeder/interop-require: Require babel ES6 modules from node land.
- Same function, but it prevent static analyzer
- It is just dynamic
require
that prevent static analyzer like Asset Relocator Loader for Webpack.
Changelog
See Releases page.
Running tests
Install devDependencies and Run npm test
:
npm test
Contributing
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Author
License
MIT © azu