Status: Experimental
@blgc/cli
is a straightforward CLI tool for bundling TypeScript libraries with presets, powered by Rollup and Esbuild.
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.
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 bundledist/cjs
: CommonJS bundledist/types
: TypeScript types
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 bundledist/package1/cjs
: CommonJS bundledist/package1/types
: TypeScript types
Expand the preset configuration via a dyn.config.js
file.
The @blgc/cli
allows combining two Rollup configurations using plugin placeholders.
-
override
(isBase = false
): Fill placeholders inoverrideConfig
with plugins frombaseConfig
.// 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 inbaseConfig
with plugins fromoverrideConfig
.// 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()]
}
}
}
};