es-iife
Transform ES module into a simple IIFE.
Features
-
import
statements are resolved to global variables. -
export
statements are exported as a global variable.
There are more samples under test/cases
folder.
Usage
const {parse} = require("acorn");
const {transform} = require("es-iife");
const code = `
import foo from "./foo.js";
const main = (value) => return foo(value);
export default main;
`;
const result = transform({
code,
parse,
name: "doFoo",
resolveGlobal: (name) => {
if (name === "./foo.js") {
return "FOO";
}
}
})
console.log(result.code);
/* ->
var doFoo = (function () {
const main = (value) => return FOO(value);
return main;
})();
*/
API reference
This module exports following members.
-
transform
: A function which can convert ES module synax into an IIFE.
transform
transform({
code: String,
parse?: Function,
ast?: Object,
sourcemap?: Boolean = false,
strict?: Boolean = false,
resolveGlobal?: (importPath: String) => globalVariableName: String,
name?: String
}) => {code: String, map?: SourceMap}
Arguments:
-
code
- the JavaScript source code that would be transformed. -
parse
- a parser function which can parse JavaScript code into ESTree. -
ast
- AST object. If undefined then useparse(code)
. -
sourcemap
- if true then generate the sourcemap. -
strict
- adduse strict
directive. -
resolveGlobal
- a function receiving an import path and return a global variable name. -
name
- The variable name that exports will be assigned to.
Returns:
-
code
- the code after transformed. -
map
- The source map object generated bymagicString.generateMap
. Ifsourcemap
is false then the map is null.
Changelog
-
0.2.2 (Feb 18, 2021)
- Add:
strict
option.
- Add:
-
0.2.1 (Oct 29, 2020)
- Fix: object shorthand issue.
- Bump dependencies. Fix for-loop issue.
-
0.2.0 (Aug 14, 2019)
- Change: define default export with
var
.
- Change: define default export with
-
0.1.1 (Aug 28, 2018)
- Fix: export from statements.
-
0.1.0 (Aug 28, 2018)
- Initial release.