Socket
Book a DemoInstallSign in
Socket

@blgc/cli

Package Overview
Dependencies
Maintainers
0
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@blgc/cli

Straightforward CLI to bundle Typescript libraries with presets, powered by Rollup and Esbuild

latest
Source
npmnpm
Version
0.0.28
Version published
Maintainers
0
Created
Source

@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

  • tsup

📖 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()]
			}
		}
	}
};

FAQs

Package last updated on 07 Mar 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts