@blgc/cli v0.0.28
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 bundleDefine 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
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 bundledist/package1/cjs: CommonJS bundledist/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 inoverrideConfigwith 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 inbaseConfigwith 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()]
}
}
}
};