@equinor/fusion-framework-cli
Command-line toolkit for developing, building, and publishing Fusion Framework applications and portal templates. Provides a unified developer experience from local development to production deployment.
Features
- Application scaffolding — generate new Fusion apps from predefined templates
- Development server — hot-reload dev server with service discovery and authentication
- Build & bundle — Vite-based production builds with manifest generation
- Publish & tag — upload bundles and configs to the Fusion app/portal service
- Snapshot versions — timestamped preview builds for PRs and CI (
--snapshot)
- Portal templates — build, bundle, and deploy portal configurations
- Service discovery — resolve Fusion service endpoints from any environment
- Authentication — Azure AD login, token management, CI/CD token support
- Plugin system — extend the CLI with optional plugin packages
Installation
pnpm add -D @equinor/fusion-framework-cli
The package exposes two binary aliases: fusion-framework-cli and ffc.
Usage
Create a new application
pnpm fusion-framework-cli app create my-app
pnpm fusion-framework-cli app create my-app --template react-app
Local development
pnpm fusion-framework-cli dev
pnpm fusion-framework-cli portal dev
Build and publish
pnpm fusion-framework-cli app build
pnpm fusion-framework-cli app pack
pnpm fusion-framework-cli app publish --env ci --config
pnpm fusion-framework-cli app pack --snapshot pr-123
Authentication
pnpm fusion-framework-cli auth login
pnpm fusion-framework-cli auth token
Command overview
app create | Scaffold a new Fusion application from a template |
app build | Build the application with Vite |
app pack | Bundle the build into a zip archive |
app publish | Build, pack, and upload in one step |
app upload | Upload a pre-built bundle |
app config | Generate or publish app configuration |
app tag | Tag a published version (e.g. latest) |
app check | Verify app registration in the app store |
app dev | Start the application dev server |
app serve | Preview a production build locally |
portal build | Build a portal template |
portal pack | Bundle the portal into a zip archive |
portal publish | Build, pack, and upload a portal |
portal upload | Upload a pre-built portal bundle |
portal config | Generate or publish portal configuration |
portal tag | Tag a published portal version |
portal dev | Start the portal dev server |
auth login | Authenticate with Azure AD |
auth logout | Clear stored credentials |
auth token | Print or acquire an access token |
disco resolve | Resolve a Fusion service endpoint |
Run pnpm fusion-framework-cli <command> --help for detailed options.
API Reference
The package exposes several sub-path exports for programmatic use:
@equinor/fusion-framework-cli (root)
defineDevServerConfig / defineFusionCli — type-safe config definition helpers
loadDevServerConfig — load and merge dev-server configuration files
resolvePackage / resolveEntryPoint — package and entry-point resolution
RuntimeEnv — runtime environment type used across the CLI
@equinor/fusion-framework-cli/app
defineAppManifest / defineAppConfig — type-safe manifest and config helpers
loadAppManifest / loadAppConfig — load and validate app manifest/config files
createAppManifestFromPackage — generate a manifest from package.json
mergeAppManifests / mergeAppConfig — deep-merge manifest/config objects
ApiAppConfigSchema — Zod schema for app config validation
@equinor/fusion-framework-cli/portal
definePortalManifest / definePortalConfig / definePortalSchema — type-safe helpers
loadPortalManifest / loadPortalConfig / loadPortalSchema — load and validate files
createPortalManifestFromPackage — generate a portal manifest from package.json
validatePortalManifest — validate a manifest against the Zod schema
@equinor/fusion-framework-cli/bin
buildApplication / buildPortal — programmatic Vite builds
bundleApp / bundlePortal — build + pack into zip
uploadApplication / uploadPortalBundle — upload bundles to the service
tagApplication / tagPortal — tag published versions
initializeFramework / configureFramework — set up the Fusion Framework for CLI operations
FusionEnv — enum of supported Fusion environments
@equinor/fusion-framework-cli/utils
assert / assertFileExists / assertObject — assertion helpers
fileExists / fileExistsSync — file-existence checks
writeFile — write files with automatic directory creation
resolveAnnotations — resolve CI/CD build annotations
generateSnapshotVersion — create timestamped snapshot versions
Configuration
Application manifest (app.manifest.ts)
import { defineAppManifest } from '@equinor/fusion-framework-cli/app';
export default defineAppManifest((env, { base }) => ({
...base,
}));
Application config (app.config.ts)
import { defineAppConfig } from '@equinor/fusion-framework-cli/app';
export default defineAppConfig((env, { base }) => ({
environment: { MY_VAR: 'value' },
endpoints: {
api: { url: 'https://api.example.com', scopes: ['api://scope/.default'] },
},
}));
Dev-server config (dev-server.config.ts)
import { defineDevServerConfig } from '@equinor/fusion-framework-cli';
export default defineDevServerConfig((env, { base }) => ({
...base,
}));
CLI plugins (fusion-cli.config.ts)
import { defineFusionCli } from '@equinor/fusion-framework-cli';
export default defineFusionCli(() => ({
plugins: ['@equinor/fusion-framework-cli-plugin-ai'],
}));
Documentation