Tools Rollup
API Reference
Complete API reference for @vitus-labs/tools-rollup.
runBuild()
runBuild(): Promise<void>Orchestrates the complete Rollup build pipeline. Same behavior as tools-rolldown's runBuild() but uses Rollup instead of Rolldown.
Steps:
- Clean output directory (
rimraf) - Create build pipeline from
package.jsonfields - Execute each build sequentially with Rollup
- Report file sizes and generate visualization
import { runBuild } from '@vitus-labs/tools-rollup'
await runBuild()Configuration Shape
Identical to tools-rolldown:
interface BuildConfig {
sourceDir: string
outputDir: string
typesDir: string
typescript: boolean
esModulesOnly: boolean
replaceGlobals: boolean
filesize: boolean
visualise: {
template: string
gzipSize: boolean
outputDir: string
} | false
extensions: string[]
include: string[]
external: string[]
exclude: string[]
globals: Record<string, string>
}Default Configuration
{
sourceDir: 'src',
outputDir: 'lib',
typesDir: 'lib/types',
typescript: true,
esModulesOnly: false,
replaceGlobals: true,
filesize: true,
visualise: {
template: 'network',
gzipSize: true,
outputDir: 'analysis',
},
extensions: ['.json', '.js', '.jsx', '.ts', '.tsx', '.es6', '.es', '.mjs'],
include: ['src'],
external: ['react/jsx-runtime'],
exclude: [
'lib',
'node_modules/**',
'**/__tests__/**',
'**/__specs__/**',
'**/__stories__/**',
'*.test.*',
'*.spec.*',
'*.stories.*',
'stories.*',
'*.story.*',
],
globals: {
react: 'React',
ReactDOM: 'react-dom',
styled: 'styled-components',
},
}Rollup Output Configuration
ESM
{
format: 'es',
sourcemap: true,
esModule: true,
generatedCode: { reservedNamesAsProps: false },
interop: 'compat',
systemNullSetters: false,
}CJS
{
format: 'cjs',
exports: 'named',
sourcemap: true,
esModule: true,
interop: 'compat',
}UMD
{
format: 'umd',
exports: 'named',
name: PKG.bundleName,
globals: swapGlobals(CONFIG.globals),
sourcemap: true,
}Global Type Definitions
The package ships global type declarations for platform constants:
// global/index.d.ts
declare global {
const __BROWSER__: true
const __WEB__: true
const __NATIVE__: true
const __NODE__: true
const __CLIENT__: true
}
declare global {
interface Window {
__BROWSER__: true
__WEB__: true
__NATIVE__: true
__NODE__: true
__CLIENT__: true
}
}Reference these in your tsconfig.json:
{
"compilerOptions": {
"types": ["@vitus-labs/tools-rollup/global"]
}
}Exports
import { runBuild } from '@vitus-labs/tools-rollup'