2.0.4 • Public • Published

    Build Status Version npm version

    $async IIFE generator

    A Node.js IIFE generator for @style.tools/async.

    An online version of the IIFE generator is available on https://style.tools/iife/

    Documentation is available on docs.style.tools/async/iife-generator.


    npm install @style.tools/async-iife

    What is IIFE?

    IIFE (Immediately-invoked Function Expressions) is a coding pattern for loading a script. An IIFE can be used in the browser safely.

    The IIFE generator makes it easy to generate an IIFE with a selection of $async modules. The IIFE generator provides compression via Google Closure Compiler (GCC) with Advanced mode for the best performance in all browsers.

    The IIFE generator can be executed as a CLI program from the command-line, as a Node.js module and as a browser script (see https://style.tools/iife/ for an online version).



    The provided iife-cli.js script can be used from the command-line. The NPM package contains a npm run iife script.


    Display usage information and a list with available modules.

    npm run iife -- --help


    The following command shows how to create an IIFE with unary format, output to path/to/iife.js and with 3 modules that automatically load the required dependencies.

    npm run iife --  --format unary --compress --output path/to/iife.js --modules css-loader,localstorage,timing

    Short flags and a space separated module list are supported.

    npm run iife --  -f unary -c -o path/to/iife.js -m "css-loader localstorage timing"

    When omitting the --output flag the script is printed to the console, e.g. for > output.js.

    Node.js module

    // load Node.js module
    const iife = require('@style.tools/async-iife');
    // return script text for inlining
    // uses memory-cache @link https://www.npmjs.com/package/memory-cache
    iife.generate(['css-loader', 'timing'], {
       debug: true, // debug sources
       format: 'unary' // !function(){ ... }()
    }).then(function(iife_script) {
       // iife_script contains the IIFE script text
    // output to file
    iife.generate(['css-loader', 'timing'], {
       compress: true, // Google Closure Compiler API compression
       format: 'wrap', // (function(){ ... })()
       output: 'path/to/iife.js',
       output_stats: true // return { modules:[], size:0, gzip_size:0 }
    }).then(function(stats) {
       // iife.js written

    The Node.js module can be used efficiently within a Node.js CMS. IIFE's are cached in memory using memory-cache.

    Warning: the generator depends on the free Google Closure Compiler API that may not be 100% reliable. When using the generator in production it may be an option to use a local Google Closure Compiler service.


    npm i @style.tools/async-iife



    DownloadsWeekly Downloads






    Unpacked Size

    69.9 kB

    Total Files


    Last publish


    • optimization