if-tsb

Insanely Fast TypeScript Bundler

Usage no npm install needed!

<script type="module">
  import ifTsb from 'https://cdn.skypack.dev/if-tsb';
</script>

README

if-tsb: Insanely Fast TypeScript Bundler

if-tsb is Bundler for TypeScript.

npm i -g if-tsb # install
if-tsb # build
if-tsb . # build with specific path
if-tsb ./index.ts # build with specific entry
if-tsb ./tsconfig.json # build with specific tsconfig.json
if-tsb -o ./output.js # build with specific output
if-tsb -w # build with watch
if-tab --clear-cache # clear cache

tsconfig.json

  • define a entry
{
    "entry": "./entry.ts", // output: "./entry.bundle.js"
    "compilerOptions": {
        /* ... */
    }
}
  • define multiple entries
{
    "entry": ["./entry.ts", "./entry2.ts"], // output: "./entry.bundle.js", "./entry2.bundle.js"
    "compilerOptions": {
        /* ... */
    }
}
  • define entries with specific output
{
    "entry": {
        "./entry.ts": "./bundled.output.js",
        "./entry2.ts": "./bundled.output2.js"
    },
    "compilerOptions": {
        /* ... */
    }
}
  • define entries with specific output alternate
{
    "entry": ["./entry.ts", "./entry2.ts"],
    "output": "./bundled.[name].js", // output: "./bundled.entry.js"
    "compilerOptions": {
        /* ... */
    }
}
  • all default options
{
    "entry": "./index.ts",
    "output": "[dirname]/[name].bundled.js",
    "bundlerOptions": {
        "globalModuleVarName": "__tsb",
        "checkCircularDependency": false, 
        "suppressDynamicImportErrors": false, 
        "cleanConsole": false, // clean console before repeated by watch
        "faster": false, // skip external parsing and reporting, cannot emit some d.ts and will not replace enum const
        "watchWaiting": 30, // bundling after ${watchWaiting}ms from file modifying
        "verbose": false,
        "bundleExternals":false, // bundle files in node_modules
        "externals": [], // files that do not bundle
        "cacheMemory": "1MB", // cache memory for watching
        "module": "none", // "commonjs"|"none"|"self"|"window"|"this"|"var (varname)"|"let (varname)"|"const (varname)"
        "preimport": [], // modules for pre-import. it replaces require('name') to __tsb.name
    },
    "compilerOptions": {
        /* ... */
    }
}
  • define entries with bundler options
{
    "entry": {
        "./entry.ts": {
            "output": "./bundled.output.js",
            /* ...bundlerOptions */
        },
        "./entry2.ts": {
            "output": "./bundled.output2.js",
            /* ...bundlerOptions */
        }
    },
    "bundlerOptions": {
        /* ...bundlerOptions */
    },
    "compilerOptions": {
        /* ... */
    }
}
  • Sharing codes
{
    "entry": "./index.ts",
    "share": {
        "./lib.ts":"share",
        "./libdir/**/*.ts":"share2",
        "globalmodule": "share3"
    },
    "bundlerOptions": {
        /* ...bundlerOptions */
    },
    "compilerOptions": {
        /* ... */
    }
}

Build with API

import { bundle, bundleWatch } = require('if-tsb');

bundle(['./entry.ts'] /*, './output.js' */); // build

// bundleWatch(['./entry.ts']); // watch

Links