or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

tessl/npm-size-limit

CLI tool and programmatic API for performance budget monitoring that measures JavaScript bundle size and execution time with plugin support for webpack, esbuild, and various bundlers.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/size-limit@11.2.x

To install, run

npx @tessl/cli install tessl/npm-size-limit@11.2.0

0

# Size Limit

1

2

Size Limit is a comprehensive performance budget tool for JavaScript applications and libraries that monitors bundle size and execution time. It provides both a CLI tool for CI integration and a programmatic API for custom workflows, with a modular plugin architecture supporting webpack, esbuild, and other bundlers.

3

4

## Package Information

5

6

- **Package Name**: size-limit

7

- **Package Type**: npm

8

- **Language**: JavaScript (Node.js)

9

- **Installation**: `npm install --save-dev size-limit` (requires plugins for functionality)

10

11

## Core Imports

12

13

```javascript

14

import sizeLimit from "size-limit";

15

import { processImport, SizeLimitError } from "size-limit";

16

```

17

18

**Note**: Size Limit is an ES module only package. CommonJS `require()` is not supported.

19

20

## Basic Usage

21

22

### CLI Tool

23

24

```bash

25

# Install with preset for typical use cases

26

npm install --save-dev @size-limit/preset-small-lib

27

28

# Or install specific plugins

29

npm install --save-dev size-limit @size-limit/file @size-limit/webpack

30

31

# Run size check

32

size-limit

33

34

# Run with specific config

35

size-limit --config .size-limit.json

36

37

# Watch mode for development

38

size-limit --watch

39

40

# JSON output for CI

41

size-limit --json

42

```

43

44

### Programmatic API

45

46

```javascript

47

import sizeLimit from "size-limit";

48

import filePlugin from "@size-limit/file";

49

import webpackPlugin from "@size-limit/webpack";

50

51

// Basic usage with plugins

52

const results = await sizeLimit(

53

[filePlugin, webpackPlugin],

54

["dist/bundle.js"]

55

);

56

57

console.log(results); // [{ size: 12345 }]

58

59

// With configuration object

60

const results = await sizeLimit(

61

[filePlugin, webpackPlugin],

62

{

63

checks: [

64

{

65

path: ["dist/bundle.js"],

66

limit: "10 kB"

67

}

68

]

69

}

70

);

71

```

72

73

## Architecture

74

75

Size Limit is built around several key components:

76

77

- **Core API**: Main `sizeLimit()` function for programmatic usage

78

- **CLI Tool**: Command-line interface with argument parsing and reporting

79

- **Plugin System**: Modular architecture with plugins for different bundlers and measurements

80

- **Configuration System**: Flexible config loading from package.json, files, or programmatic objects

81

- **Reporter System**: Output formatting for console, JSON, and CI integration

82

83

## Capabilities

84

85

### Programmatic API

86

87

Core programmatic interface for integrating Size Limit into custom workflows and build systems.

88

89

```javascript { .api }

90

/**

91

* Run Size Limit and return the result

92

* @param plugins - Array of Size Limit plugins like @size-limit/webpack

93

* @param files - File paths array or internal config object

94

* @returns Promise resolving to array of measurement results

95

*/

96

function sizeLimit(

97

plugins: Function[],

98

files: string[] | object

99

): Promise<SizeLimitResult[]>;

100

```

101

102

[Programmatic API](./programmatic-api.md)

103

104

### CLI Interface

105

106

Command-line tool for running Size Limit checks in development and CI environments.

107

108

```bash { .api }

109

# Basic commands

110

size-limit [options]

111

112

# Key options

113

--json # Output results in JSON format

114

--silent # Silent mode (no console output)

115

--watch # Watch mode for file changes

116

--why # Bundle analysis mode

117

--clean-dir # Clean bundle directory before analysis

118

```

119

120

[CLI Interface](./cli-interface.md)

121

122

### Configuration System

123

124

Flexible configuration system supporting multiple formats and validation options.

125

126

```javascript { .api }

127

// Configuration object structure

128

interface Check {

129

path: string | string[]; // File paths (required)

130

limit?: string; // Size/time limit

131

name?: string; // Check name

132

brotli?: boolean; // Brotli compression (default: true)

133

gzip?: boolean; // Gzip compression

134

webpack?: boolean; // Enable webpack bundling

135

config?: string; // Custom bundler config path

136

entry?: string | string[]; // Bundler entry points

137

import?: string | Record<string, string>; // Tree-shaking tests

138

ignore?: string[]; // Exclude patterns

139

running?: boolean; // Execution time measurement

140

time?: TimeOptions; // Time measurement options

141

hidePassed?: boolean; // Hide passed checks in output

142

highlightLess?: boolean; // Highlight improvements

143

compareWith?: string; // Path to stats.json for comparison

144

uiReports?: object; // Custom Statoscope UI reports

145

disableModuleConcatenation?: boolean; // Disable webpack module concatenation

146

module?: boolean; // Module-related option

147

modifyWebpackConfig?: (config: any) => any; // Webpack config modifier

148

modifyEsbuildConfig?: (config: any) => any; // ESBuild config modifier

149

}

150

151

type SizeLimitConfig = Check[];

152

```

153

154

[Configuration](./configuration.md)

155

156

### Plugin System

157

158

Modular plugin architecture for different bundlers, measurements, and analysis tools.

159

160

```javascript { .api }

161

// Plugin interface (for plugin developers)

162

interface Plugin {

163

name: string;

164

before?(config: object, check: Check): Promise<void>;

165

step0?(config: object, check: Check): Promise<void>;

166

// ... step1 through step100

167

finally?(config: object, check: Check): Promise<void>;

168

wait0?: string; // Progress message

169

// ... wait1 through wait100

170

}

171

```

172

173

[Plugin System](./plugin-system.md)

174

175

### Error Handling

176

177

Structured error handling with specific error types and helpful messages.

178

179

```javascript { .api }

180

class SizeLimitError extends Error {

181

constructor(type: string, ...args: any[]);

182

name: "SizeLimitError";

183

example?: string; // Configuration example for certain error types

184

}

185

```

186

187

[Error Handling](./error-handling.md)

188

189

## Types

190

191

```javascript { .api }

192

// Main API types

193

interface TimeOptions {

194

networkSpeed?: string; // Default: "50 kB"

195

latency: string; // Network latency simulation

196

loadingMessage?: string; // Default: "on slow 3G"

197

}

198

199

// Result object structure

200

interface SizeLimitResult {

201

size?: number; // Bundle size in bytes

202

time?: number; // Total execution time

203

runTime?: number; // JavaScript execution time

204

loadTime?: number; // Loading time including network

205

}

206

```