Build Tools
Each package uses a specific build tool:- Extension: WXT (Web Extension Toolkit)
- MCP Server: tsdown
- Plugins: tsdown
- Shared: tsdown
Build Commands
Build All Packages
From repository root:pnpm -r build, building packages in dependency order:
@tempad-dev/shared(no dependencies)@tempad-dev/plugins(no dependencies)@tempad-dev/mcp(depends on shared)@tempad-dev/extension(depends on shared, plugins)
Build Individual Packages
Extension
packages/extension/.output/chrome-mv3/
Build steps:
- WXT builds extension
- Rewrite rules are compiled
- README is generated
rewrite/figma.ts to dist/figma.js using esbuild.
MCP Server
packages/mcp-server/dist/
Build tool: tsdown
Plugins
packages/plugins/dist/
Build tool: tsdown
Exports:
- ESM:
dist/index.js - Types:
dist/index.d.ts
Shared
packages/shared/dist/
Build tool: tsdown
Exports:
- ESM:
dist/index.js - Types:
dist/index.d.ts
Packaging
Extension Packaging
Create a distributable extension ZIP:packages/extension/.output/*.zip
This packages the built extension for Chrome Web Store submission.
Pre-requisites:
- Extension must be built first (
pnpm build:ext)
NPM Publishing
Plugins Package
@tempad-dev/plugins to npm with public access.
Pre-publish checks:
- Runs
buildautomatically viaprepublishOnly - Includes only
dist/andREADME.md
MCP Server Package
@tempad-dev/mcp to npm with public access.
Pre-publish checks:
- Runs
buildautomatically viaprepublishOnly - Includes only
dist/andREADME.md
dist/cli.mjs
Development Builds
Extension Development Mode
- Hot module reloading
- Source maps
- Fast incremental builds
- Live extension reloading in browser
packages/extension/.output/chrome-mv3/
Load in browser:
- Navigate to
chrome://extensions - Enable “Developer mode”
- Click “Load unpacked”
- Select
.output/chrome-mv3/
Watch Mode for Libraries
For libraries (mcp, plugins, shared), use build tool watch mode:Build Output Structure
Extension
MCP Server
Plugins
Shared
Build Scripts Deep Dive
Extension Build Script
Frompackages/extension/package.json:
- WXT builds extension bundle
- esbuild compiles rewrite rules to IIFE
- Copies rewrite manifests
- Generates README from template
Library Build Scripts
Frompackages/mcp-server/package.json, packages/plugins/package.json, packages/shared/package.json:
- TypeScript compilation
- ESM output
- Declaration file generation
- Tree-shaking
Clean Builds
To ensure clean builds, remove previous outputs:Troubleshooting
Build Fails with Type Errors
Check:- Dependencies are built:
pnpm build - Type check passes:
pnpm typecheck - Clean install:
rm -rf node_modules && pnpm install
Extension Build Succeeds but Doesn’t Load
Check:- Output directory exists:
packages/extension/.output/chrome-mv3/ manifest.jsonis present- Rewrite rules were built:
dist/figma.jsexists - Browser console for errors
Library Build Missing Types
Check:tsconfig.jsonhasdeclaration: true- tsdown config includes types
dist/index.d.tsexists after build
pnpm workspace:* Dependencies Not Resolving
Solution: Build dependencies first:CI/CD Builds
For CI environments, use:Related Documentation
- Setup - Development environment setup
- Testing - Test commands
- Architecture - Package structure