Skip to content

Latest commit

 

History

History

cli

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

@blgc/cli banner

GitHub License NPM total downloads Join Discord

Status: Experimental

@blgc/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:

blgc 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 @blgc/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('@blgc/cli').TDynConfig}
 */
module.exports = {
	library: {
		rollupConfig: {
			isBase: false,
			options: {
				plugins: [preserveDirectives()]
			}
		}
	}
};