0.0.14 • Published 11 months ago

@ibg/cli v0.0.14

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Status: Experimental

@ibg/cli is a straightforward CLI tool for bundling TypeScript libraries with presets, powered by Rollup and Esbuild.

🌟 Motivation

Eliminate the hassle of manually configuring Rollup over and over by providing a flexible wrapper with preset configurations for Figma plugins, Rust (Wasm), and TypeScript library bundling.

⚖️ Alternatives

📖 Usage

Bundle Files

To bundle your files, run:

ibg bundle

Define the source file and output locations in package.json:

{
  "source": "./src/index.ts",
  "main": "./dist/cjs/index.js",
  "module": "./dist/esm/index.js",
  "types": "./dist/types/index.d.ts"
}

Output:

  • dist/esm: ESM bundle
  • dist/cjs: CommonJS bundle
  • dist/types: TypeScript types

Bundle multiple Files

To bundle multiple files, use the exports field:

{
  "exports": {
    "./package1": {
      "source": "./src/index.ts",
      "main": "./dist/package1/cjs/index.js",
      "module": "./dist/package1/esm/index.js",
      "types": "./dist/package1/types/index.d.ts"
    }
  }
}

Output:

  • dist/package1/esm: ESM bundle
  • dist/package1/cjs: CommonJS bundle
  • dist/package1/types: TypeScript types

Custom Configuration

Expand the preset configuration via a dyn.config.js file.

Add Rollup plugins

The @ibg/cli allows combining two Rollup configurations using plugin placeholders.

  • override (isBase = false): Fill placeholders in overrideConfig with plugins from baseConfig.

    // Base Configuration (rollup.config.base.js)
    export default {
      plugins: [nodeExternals(), commonjs(), 'import-css', typescriptPaths(), esbuild()]
    };
    
    // Override Configuration (rollup.config.js)
    export default {
      plugins: [css()]
    };
    
    // Result
    plugins: [nodeExternals(), commonjs(), css(), typescriptPaths(), esbuild()];
  • base (isBase = true): Fill placeholders in baseConfig with plugins from overrideConfig.

    // Base Configuration (rollup.config.base.js)
    export default {
      plugins: [nodeExternals(), commonjs(), 'import-css', typescriptPaths(), esbuild()]
    };
    
    // Override Configuration (rollup.config.js)
    export default {
      plugins: ['node-externals', 'commonjs', css(), 'resolve-typescript-paths', 'esbuild']
    };
    
    // Result
    plugins: [nodeExternals(), commonjs(), css(), typescriptPaths(), esbuild()];

In the below example we expand the preset library Rollup config with the rollup-plugin-preserve-directives plugin.

/**
 * @type {import('@ibg/cli').TDynConfig}
 */
module.exports = {
	library: {
		rollupConfig: {
			isBase: false,
			options: {
				plugins: [preserveDirectives()]
			}
		}
	}
};