What is Isobuild?
Isobuild is Meteor’s build and packaging system. It knows how to compile the same JavaScript code-base to different architectures automatically, enabling true full-stack JavaScript development. Key capabilities:- Cross-platform compilation: Build for browser, server, and mobile from a single codebase
- Dependency management: Automatic resolution and loading of package dependencies
- Build plugins: Extensible compiler, linter, and minifier architecture
- Single-loading: Only one version of each package loads in an app
What is an Isopack?
Each package used by Isobuild forms an Isopack. An Isopack is a package format containing source code for each architecture it can run on.Core Packages vs. Community Packages
Core Packages
Core packages are maintained in the official Meteor repository atpackages/. They are:
- Released with Meteor versions
- Always compatible with the current Meteor release
- Don’t have
.versionsfiles (released from checkout)
accounts-base- User account systemmongo- MongoDB adapter and Minimongotracker- Dependency tracker for reactive callbacksecmascript- ES2015+ compiler plugin
Community Packages
Community packages are published to Atmosphere, Meteor’s package repository:- Published by community members
- Named with format
username:package-name - Available via
meteor add username:package-name - Browsable at atmospherejs.com
Package Structure
Every Meteor package contains apackage.js file that defines:
Package Dependencies
Atmosphere Dependencies
Packages can depend on other Meteor packages:npm Dependencies
Packages can include npm packages:Cordova Plugins
Mobile apps can use Cordova plugins:Version Constraints
Meteor uses Semantic Versioning (SemVer) with a constraint solver:- Major version must match exactly: If you depend on
2.0.0, only2.x.xversions work - Minor/patch must be greater or equal:
2.1.3accepts2.1.4and2.2.0, but not2.0.4 - Single-loading: Only one version of a package loads per app
- Gravity: The solver picks the oldest compatible version
Build Plugins
Isobuild supports three types of build plugins:Linters
Check code for errors and style issues:Compilers
Transform source files to JavaScript or CSS:ecmascript/package.js:
Minifiers
Minify JavaScript and CSS for production:Local Packages
Packages can live locally in your app without publishing to Atmosphere:packages/directory in your app- Directories in
METEOR_PACKAGE_DIRSenvironment variable - Downloaded packages from Atmosphere (cached in
~/.meteor/packages)
Package Cache
Published packages are cached at:- macOS/Linux:
~/.meteor/packages - Windows:
%LOCALAPPDATA%\.meteor\packages
Next Steps
Creating Packages
Learn how to create your own packages
Publishing Packages
Publish your package to Atmosphere
Atmosphere Repository
Explore the package ecosystem
Package.js API
Complete API reference