or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

configuration.mdindex.mdpackage-inspection.mdpackage-management.mdscript-running.mdstore-management.mdworkspace-management.md

workspace-management.mddocs/

0

# Workspace Management

1

2

Monorepo and workspace operations with filtering, recursive commands, and cross-package dependency management for complex multi-package projects.

3

4

## Capabilities

5

6

### Recursive Commands

7

8

Execute commands across all packages in a workspace with dependency awareness and parallel execution.

9

10

```bash { .api }

11

/**

12

* Run commands recursively across workspace packages

13

* Executes in topological order by default

14

*/

15

pnpm --recursive <command> [options]

16

pnpm -r <command> [options]

17

pnpm --multi <command> [options]

18

pnpm -m <command> [options]

19

```

20

21

**Options:**

22

- `--parallel` - Run commands in parallel instead of serial

23

- `--stream` - Stream output from parallel executions

24

- `--max-workers <number>` - Limit concurrent workers

25

- `--workspace-concurrency <number>` - Control workspace concurrency

26

- `--no-bail` - Continue execution despite failures

27

- `--reporter <type>` - Set output reporter for multi-package operations

28

29

**Usage Examples:**

30

31

```bash

32

# Install in all workspaces

33

pnpm -r install

34

35

# Build all packages in dependency order

36

pnpm -r build

37

38

# Test all packages in parallel

39

pnpm -r --parallel test

40

41

# Install with limited concurrency

42

pnpm -r --max-workers=2 install

43

44

# Continue testing despite failures

45

pnpm -r --no-bail test

46

```

47

48

### Package Filtering

49

50

Filter workspace packages using patterns, dependencies, and change detection for targeted operations.

51

52

```bash { .api }

53

/**

54

* Filter workspace packages for targeted operations

55

* Supports glob patterns, dependency filtering, and change detection

56

*/

57

pnpm --filter <pattern> <command> [options]

58

pnpm -F <pattern> <command> [options]

59

```

60

61

**Filter Patterns:**

62

- `package-name` - Exact package name match

63

- `@scope/*` - All packages in scope

64

- `*api*` - Packages containing "api" in name

65

- `frontend-*` - Packages starting with "frontend-"

66

- `./packages/*` - Packages in specific directory

67

- `{./packages/frontend}` - Specific package path

68

69

**Dependency Filtering:**

70

- `...package-name` - Package and all its dependencies

71

- `package-name...` - Package and all packages that depend on it

72

- `...package-name...` - Package, its dependencies, and dependents

73

74

**Change Detection:**

75

- `...[HEAD~1]` - Packages changed since HEAD~1

76

- `[HEAD~1]` - Only packages changed since HEAD~1 (not dependencies)

77

- `...[origin/main]` - Packages changed since origin/main

78

79

**Usage Examples:**

80

81

```bash

82

# Filter by name pattern

83

pnpm --filter "*api*" build

84

pnpm --filter "@myorg/*" test

85

86

# Filter by dependencies

87

pnpm --filter "...@myorg/core" build

88

pnpm --filter "@myorg/frontend..." test

89

90

# Filter by changes

91

pnpm --filter "...[HEAD~1]" test

92

pnpm --filter "[origin/main]" build

93

94

# Combine filters

95

pnpm --filter "@myorg/*" --filter "...[HEAD~1]" build

96

```

97

98

### Deploy Operations

99

100

Deploy workspace packages with production-optimized dependency resolution.

101

102

```bash { .api }

103

/**

104

* Deploy workspace packages for production

105

* Installs only production dependencies with optimized layout

106

*/

107

pnpm deploy <target-dir> [options]

108

```

109

110

**Options:**

111

- `--filter <pattern>` - Deploy specific packages only

112

- `--prod` - Deploy production dependencies only (default)

113

- `--dev` - Include development dependencies

114

115

**Usage Examples:**

116

117

```bash

118

# Deploy current package

119

pnpm deploy ../deploy/api

120

121

# Deploy with filtering

122

pnpm deploy --filter @myorg/api ../deploy/api

123

124

# Deploy multiple packages

125

pnpm deploy --filter "@myorg/{api,web}" ../deploy/

126

```

127

128

### Workspace Configuration

129

130

Configure workspace behavior through pnpm-workspace.yaml and package.json settings.

131

132

```yaml { .api }

133

# pnpm-workspace.yaml

134

packages:

135

- 'packages/*'

136

- 'apps/*'

137

- '!**/test/**'

138

```

139

140

**Workspace Root Management:**

141

- `--workspace-root`, `-w` - Include workspace root in operations

142

- `--include-workspace-root` - Include root when filtering

143

- `--ignore-workspace` - Ignore workspace configuration

144

145

**Usage Examples:**

146

147

```bash

148

# Include workspace root

149

pnpm -w add -D typescript

150

151

# Install in root and all packages

152

pnpm -r --include-workspace-root install

153

154

# Ignore workspace configuration

155

pnpm --ignore-workspace install

156

```

157

158

## Workspace Dependency Management

159

160

### Cross-Package Dependencies

161

162

Manage dependencies between workspace packages with workspace protocol.

163

164

```json { .api }

165

// package.json dependencies using workspace protocol

166

{

167

"dependencies": {

168

"@myorg/utils": "workspace:*", // Any version from workspace

169

"@myorg/core": "workspace:^1.0.0", // Version range from workspace

170

"@myorg/api": "workspace:~2.1.0" // Specific range from workspace

171

}

172

}

173

```

174

175

### Link Workspace Packages

176

177

Control how workspace packages are linked during development.

178

179

```bash { .api }

180

# Configuration options

181

--link-workspace-packages # Link workspace packages (default: true)

182

--shared-workspace-lockfile # Use single lockfile for workspace (default: true)

183

--save-workspace-protocol # Save with workspace: protocol

184

```

185

186

**Usage Examples:**

187

188

```bash

189

# Add workspace dependency

190

pnpm add @myorg/utils --workspace

191

192

# Update workspace dependencies

193

pnpm update --recursive @myorg/core

194

195

# Install with workspace protocol

196

pnpm add @myorg/api --save-workspace-protocol

197

```

198

199

## Workspace Commands

200

201

### Workspace-Specific Install Behavior

202

203

Installation behavior differs in workspace environments with automatic recursive mode.

204

205

```bash { .api }

206

# Commands that auto-enable recursive mode in workspaces:

207

pnpm install # Installs in root and all packages

208

pnpm import # Imports lockfiles recursively

209

pnpm dedupe # Deduplicates across workspace

210

```

211

212

### Workspace Filtering Options

213

214

Advanced filtering for complex workspace scenarios.

215

216

```bash { .api }

217

# Workspace-aware filtering

218

--changed-files-ignore-pattern <pattern> # Ignore files for change detection

219

--test-pattern <pattern> # Pattern for test files

220

--fail-if-no-match # Fail if no packages match filter

221

```

222

223

**Usage Examples:**

224

225

```bash

226

# Test only packages with changes, ignoring README updates

227

pnpm --filter "...[HEAD~1]" --changed-files-ignore-pattern "**/README.md" test

228

229

# Build packages matching pattern, fail if none found

230

pnpm --filter "@myorg/web-*" --fail-if-no-match build

231

```

232

233

### Workspace Script Execution

234

235

Execute scripts across workspace with various execution strategies.

236

237

```bash { .api }

238

# Serial execution (respects dependencies)

239

pnpm -r run build

240

241

# Parallel execution

242

pnpm -r --parallel run test

243

244

# Stream output from parallel runs

245

pnpm -r --parallel --stream run dev

246

247

# Limited concurrency

248

pnpm -r --parallel --max-workers=3 run build

249

```

250

251

## Workspace Analysis

252

253

### Package Relationships

254

255

Analyze package relationships and dependencies within workspace.

256

257

```bash { .api }

258

# Show workspace package tree

259

pnpm list --recursive

260

261

# Show why a package is included

262

pnpm why --recursive lodash

263

264

# Show outdated packages across workspace

265

pnpm outdated --recursive

266

```

267

268

### Workspace State

269

270

Commands for understanding workspace structure and state.

271

272

```bash { .api }

273

# List all workspace packages

274

pnpm list --recursive --depth=0

275

276

# Show workspace root

277

pnpm root

278

279

# Show workspace package locations

280

pnpm list --recursive --long

281

```

282

283

## Performance Optimization

284

285

### Concurrent Execution

286

287

Control concurrency for optimal performance in workspace operations.

288

289

```bash { .api }

290

# Control worker processes

291

--max-workers <number> # Limit concurrent workers

292

--workspace-concurrency <number> # Control workspace operation concurrency

293

294

# Execution strategies

295

--parallel # Run in parallel

296

--stream # Stream output

297

--reporter append-only # Optimized output for CI

298

```

299

300

### Selective Operations

301

302

Optimize workspace operations by targeting only necessary packages.

303

304

```bash { .api }

305

# Target changed packages only

306

pnpm --filter "...[HEAD~1]" build

307

308

# Target specific package groups

309

pnpm --filter "@myorg/{api,web}" test

310

311

# Target by dependency relationships

312

pnpm --filter "...changed-package" build

313

```

314

315

## Build Management

316

317

### Approve Builds

318

319

Approve build permissions for packages with build scripts.

320

321

```bash { .api }

322

/**

323

* Approve builds for packages

324

* Manages build permissions for security

325

*/

326

pnpm approve-builds [options]

327

```

328

329

**Usage Examples:**

330

331

```bash

332

# Approve builds for current package

333

pnpm approve-builds

334

335

# Approve builds in workspace

336

pnpm approve-builds --recursive

337

```

338

339

### Ignored Builds

340

341

Manage packages that are ignored during build operations.

342

343

```bash { .api }

344

/**

345

* Manage ignored builds

346

* Controls which packages skip build scripts

347

*/

348

pnpm ignored-builds [options]

349

```

350

351

**Usage Examples:**

352

353

```bash

354

# Show ignored builds

355

pnpm ignored-builds

356

357

# Add package to ignored builds

358

pnpm ignored-builds add some-package

359

```

360

361

## Recursive Command Aliases

362

363

Alternative forms of recursive commands:

364

365

```bash { .api }

366

# Standard recursive syntax

367

pnpm --recursive <command>

368

pnpm -r <command>

369

370

# Multi command (alias for recursive)

371

pnpm --multi <command>

372

pnpm -m <command>

373

374

# Direct recursive command

375

pnpm recursive <command>

376

pnpm multi <command>

377

pnpm m <command>

378

```