Use when working with tools-core utilities, rspack integration, or modern tooling. Covers logging, npm management, process spawning, git helpers, and Meteor app configuration APIs.
Utility packages for modern tooling, bundler integrations, and native solutions.
/packages/tools-core)Central utility package providing helpers for npm, logging, process management, and Meteor configuration. This is the foundation for modern tool integrations.
lib/log.js)import { logProgress, logError, logInfo, logSuccess } from 'meteor/tools-core';
logProgress('Building application...'); // Blue
logSuccess('Build complete'); // Green
logError('Build failed'); // Red
logInfo('Using Rspack bundler'); // Purple
Respects METEOR_DISABLE_COLORS environment variable.
lib/npm.js)| Function | Description |
|---|---|
getNodeBinaryPath(binaryName) |
| Gets path to Node binaries (npm, npx, node) |
checkNpmDependencyExists(dep, opts) | Checks if npm package is installed |
checkNpmBinaryExists(binary, opts) | Checks if binary exists in node_modules/.bin |
checkNpmDependencyVersion(dep, opts) | Validates semver with conditions (gte, lt, eq) |
installNpmDependency(deps, opts) | Installs dependencies (npm/yarn, dev/exact flags) |
getNpmCommand(args) | Returns npm command with meteor npm fallback |
getNpxCommand(args) | Returns npx command with meteor npx fallback |
getYarnCommand(args) | Gets yarn command path |
isYarnProject(opts) | Detects yarn projects (yarn.lock, packageManager) |
getMonorepoPath(opts) | Detects monorepo root (workspaces, lerna, pnpm) |
isMonorepo(opts) | Boolean monorepo detection |
lib/process.js)| Function | Description |
|---|---|
spawnProcess(cmd, args, opts) | Spawns process with streaming output, color preservation |
stopProcess(proc, opts) | Graceful termination with SIGTERM/SIGKILL fallback |
isProcessRunning(proc) | Checks if process is still running |
isPortAvailable(port, host) | Checks if port is free |
waitForPort(port, opts) | Waits for port availability with timeout |
Options for spawnProcess: env, cwd, detached, onStdout, onStderr, onExit, onError
lib/meteor.js)Application Configuration:
| Function | Description |
|---|---|
getMeteorAppDir() | Gets application root directory |
getMeteorAppPackageJson() | Parses app's package.json |
getMeteorAppConfig() | Retrieves Meteor config from package.json or Plugin |
getMeteorAppPort() | Gets app port from environment |
getMeteorAppConfigModern() | Gets modern bundler configuration |
isMeteorAppConfigModernVerbose() | Checks verbose flag |
hasMeteorAppConfigAutoInstallDeps() | Auto-install deps flag |
Entry Points:
| Function | Description |
|---|---|
getMeteorAppEntrypoints() | Gets main/test modules for client/server |
getMeteorInitialAppEntrypoints() | Gets initial entry points with HTML detection |
isMeteorAppTestModule() | Checks if project is test module |
setMeteorAppEntrypoints(opts) | Sets entry points via environment variables |
setMeteorAppIgnore(pattern) | Sets file ignore patterns |
setMeteorAppCustomScriptUrl(url) | Sets custom script URLs |
Command Detection:
| Function | Description |
|---|---|
isMeteorAppRun() | Running in 'run' mode |
isMeteorAppBuild() | Running in 'build' or 'deploy' |
isMeteorAppUpdate() | Running in 'update' |
isMeteorAppTest() | In test mode |
isMeteorAppTestFullApp() | Test mode with full-app flag |
isMeteorAppTestWatch() | Test mode in watch mode |
isMeteorAppNativeAndroid() | Native Android mode |
isMeteorAppNativeIos() | Native iOS mode |
isMeteorAppNative() | Any native mode |
isMeteorAppDevelopment() | Development mode |
isMeteorAppProduction() | Production mode |
isMeteorAppDebug() | Debug mode |
Package Detection:
| Function | Description |
|---|---|
isMeteorBlazeProject() | Has blaze/blaze-html-templates |
isMeteorBlazeHotProject() | Blaze with hot reload |
isMeteorCoffeescriptProject() | Has CoffeeScript |
isMeteorLessProject() | Has Less CSS |
isMeteorScssProject() | Has SCSS/Sass |
isMeteorTypescriptProject() | Has TypeScript |
isMeteorBundleVisualizerProject() | Has bundle visualizer |
isMeteorPackagesTest() | test-packages command |
File Operations:
| Function | Description |
|---|---|
getMeteorAppFilesAndFolders(opts) | Scans app directory (recursive, with ignore) |
getMeteorAppPackages() | Lists all loaded packages |
getMeteorEnvPackageDirs() | Gets package directories from env vars |
getMeteorToolsRequire(filePath) | Requires module relative to Meteor tools |
lib/global-state.js)Maintains persistent state across file changes during development:
import { getGlobalState, setGlobalState, removeGlobalState, clearGlobalState } from 'meteor/tools-core';
setGlobalState('buildStartTime', Date.now());
const startTime = getGlobalState('buildStartTime');
lib/git.js)| Function | Description |
|---|---|
isGitRepository(dir) | Checks if directory is git repo |
gitignoreExists(dir) | Checks .gitignore existence |
ensureGitignoreExists(dir, entries) | Creates .gitignore with initial entries |
getMissingGitignoreEntries(dir, entries) | Finds missing entries |
addGitignoreEntries(dir, entries, ctx) | Adds entries with context logging |
lib/string.js)| Function | Description |
|---|---|
capitalizeFirstLetter(str) | Capitalizes first character |
shuffleString(str) | Shuffles string characters |
joinWithAnd(items, opts) | Human-readable list ("a, b, and c") |
/packages/rspack)Modern bundler integration using Rspack (Rust-based Webpack alternative).
| File | Description |
|---|---|
lib/constants.js | Default versions, global state keys, build contexts |
lib/dependencies.js | Dependency checking and auto-installation |
lib/build-context.js | Build directory management |
lib/config.js | Meteor configuration for Rspack |
lib/processes.js | Rspack process spawning |
lib/compilation.js | Compilation tracking |
| Context | Directory | Purpose |
|---|---|---|
RSPACK_BUILD_CONTEXT | _build | Build output |
RSPACK_ASSETS_CONTEXT | build-assets | Static assets |
RSPACK_CHUNKS_CONTEXT | build-chunks | Chunk bundles |
RSPACK_DOCTOR_CONTEXT | .rsdoctor | Analysis/diagnostics |
@rspack/core ^1.7.1@meteorjs/rspack ^0.3.56 (configuration logic)@rspack/plugin-react-refresh ^1.4.3swc-loader ^0.2.6getMeteorInitialAppEntrypoints() for entry points/packages/typescript)Compiler plugin for TypeScript/TSX file compilation.
Registered Plugin: compile-typescript
Supported Extensions: .ts, .tsx
Implied Packages: modules, ecmascript-runtime, babel-runtime, promise, dynamic-import
Features:
Limitations:
/packages/webapp)HTTP server integration using Express.js 5.x framework.
import { WebApp } from 'meteor/webapp';
// Middleware registration
WebApp.connectHandlers.use('/api', myMiddleware);
WebApp.handlers.use(compression());
// Direct Express access
WebApp.expressApp.get('/health', (req, res) => res.send('OK'));
// Server instance
WebApp.httpServer;
// Hooks
WebApp.onListening(() => console.log('Server ready'));
| Property | Description |
|---|---|
WebApp.connectHandlers | Express middleware registry (legacy name) |
WebApp.handlers | Current middleware registry |
WebApp.rawConnectHandlers | Raw Express handlers |
WebApp.expressApp | Direct Express app instance |
WebApp.httpServer | HTTP server instance |
WebApp.express | Express module export |
Dependencies: [email protected], [email protected], [email protected], [email protected]