The Rsbuild-based library development tool.
npx @tessl/cli install tessl/npm-rslib--core@0.12.0Rslib is a comprehensive library development tool built on top of Rsbuild that enables developers to create high-quality JavaScript and TypeScript libraries with minimal configuration. It provides out-of-the-box build capabilities supporting multiple output formats (ESM, CJS, UMD), compilation of diverse languages, declaration file generation, and advanced features like Module Federation.
npm install @rslib/coreimport { build, defineConfig, loadConfig, logger } from "@rslib/core";
import type { RslibConfig, LibConfig } from "@rslib/core";For CommonJS:
const { build, defineConfig, loadConfig, logger } = require("@rslib/core");Re-exported Rsbuild APIs:
import { rsbuild, rspack } from "@rslib/core";
// Or access specific Rsbuild functionality
import type { Rspack } from "@rslib/core";import { defineConfig, build, loadConfig } from "@rslib/core";
// Define configuration
export default defineConfig({
lib: [
{
format: "esm",
dts: true,
},
{
format: "cjs",
}
]
});
// Load and build programmatically
const { content: config } = await loadConfig();
const rsbuildInstance = await build(config);Rslib is built around several key components:
build, dev, inspect, etc.)Primary build functionality for compiling library projects using Rsbuild as the underlying build system.
function build(config: RslibConfig, options?: BuildOptions): Promise<RsbuildInstance>;
interface BuildOptions extends CommonOptions {
watch?: boolean;
}Type-safe configuration definition and loading system with support for both static and function-based configurations.
function defineConfig(config: RslibConfig): RslibConfig;
function defineConfig(config: RslibConfigSyncFn): RslibConfigSyncFn;
function defineConfig(config: RslibConfigAsyncFn): RslibConfigAsyncFn;
function loadConfig(options?: LoadConfigOptions): Promise<{
content: RslibConfig;
filePath: string;
}>;
interface LoadConfigOptions {
cwd?: string;
path?: string;
envMode?: string;
}
interface RslibConfig extends RsbuildConfig {
lib: LibConfig[];
output?: RslibOutputConfig;
}Command-line interface providing development workflow tools including build, development server, inspection, and Module Federation support.
function runCli(): void;
function inspect(config: RslibConfig, options?: InspectOptions): Promise<RsbuildInstance>;
function startMFDevServer(config: RslibConfig, options?: CommonOptions): Promise<RsbuildInstance | undefined>;
function prepareCli(): void;interface CommonOptions {
root?: string;
config?: string;
envDir?: string;
envMode?: string;
lib?: string[];
}
interface LibConfig extends EnvironmentConfig {
id?: string;
format?: Format;
bundle?: boolean;
autoExtension?: boolean;
autoExternal?: AutoExternal;
syntax?: Syntax;
dts?: Dts;
shims?: Shims;
redirect?: Redirect;
umdName?: Rspack.LibraryName;
banner?: BannerAndFooter;
footer?: BannerAndFooter;
}
type Format = 'esm' | 'cjs' | 'umd' | 'mf' | 'iife';const logger: Logger;
const version: string;Rslib re-exports the complete Rsbuild API for advanced usage:
// Complete Rsbuild namespace
import { rsbuild } from "@rslib/core";
// Rspack types and functionality
import { rspack, type Rspack } from "@rslib/core";
// Re-exported Rsbuild types (available from @rslib/core)
interface RsbuildInstance {
// Rsbuild instance methods
build(options?: { watch?: boolean }): Promise<{ close(): Promise<void> }>;
// Additional Rsbuild methods available
}
interface RsbuildConfig {
// Base Rsbuild configuration options
mode?: 'development' | 'production';
root?: string;
plugins?: RsbuildPlugin[];
dev?: any;
server?: any;
environments?: Record<string, EnvironmentConfig>;
}
interface EnvironmentConfig {
// Rsbuild environment configuration
source?: any;
output?: any;
tools?: any;
[key: string]: any;
}
type RsbuildMode = 'development' | 'production';