A VS Code extension for SAP Commerce Cloud (Hybris) development. Provides fast Search Anywhere, File Search, Go-to-Definition, Hover info, an Extension Tree sidebar, ImpEx syntax highlighting, and automatic index management.
Powered by the hybris-index-service — a bundled indexer that auto-starts when VS Code opens a Hybris project.
Features
- Search Anywhere (
Cmd+Shift+H / Ctrl+Shift+H) - Search types, beans, and file content across the entire project. Supports regex toggle.
- File Search (
Cmd+Shift+J / Ctrl+Shift+J) - Find files by name across all indexed extensions.
- Go-to-Definition (
Ctrl+Click) - Navigate to type codes and bean IDs in XML and ImpEx files.
- Hover Info - Rich tooltips for types (hierarchy, attributes) and beans (class, properties) in XML and ImpEx.
- Extension Tree - Sidebar showing all Hybris extensions with metadata.
- Status Bar - Connection status, type/bean counts. Click for Start/Stop/Reconnect actions.
- ImpEx Grammar - TextMate syntax highlighting for
.impex files (header keywords, type codes, attribute qualifiers, macros, modifiers, strings).
- Auto-reindexing - File watcher detects changes to
items.xml, spring.xml, beans.xml, Java, ImpEx, and other source files, then rebuilds only the affected index categories.
Prerequisites
- JDK 21+
- Node.js 18+ (for building from source)
Installing from VSIX
code --install-extension hybris-vscode-*.vsix
Or in VS Code: Extensions panel > ... menu > Install from VSIX > select the file.
The VSIX is self-contained — it bundles the index service JAR. No separate installation needed.
Building from Source
# 1. Build the index service fat JAR first
cd ../hybris-index-service
./gradlew build
# 2. Install dependencies and build the extension
cd ../hybris-vscode
npm install
node esbuild.js
# 3. Package the VSIX (automatically copies the JAR via prepackage script)
npm run package
This produces a .vsix file (~30 MB, including the bundled index service JAR).
Development Mode
For development without packaging a VSIX:
npm install
node esbuild.js
Then open the hybris-vscode folder in VS Code and press F5 to launch the Extension Development Host.
In dev mode, copy the JAR manually before launching:
mkdir -p server && cp ../hybris-index-service/build/libs/hybris-index-service.jar server/hybris-index.jar
Watch Mode
node esbuild.js --watch
Rebuilds on file changes for faster iteration.
Settings
| Setting |
Default |
Description |
hybris.indexService.autoStart |
true |
Auto-start the index service on activation |
hybris.indexService.port |
8088 |
REST API port |
hybris.indexService.javaPath |
"java" |
Path to Java executable |
hybris.indexService.projectPath |
"" |
Hybris project root (empty = auto-detect from workspace) |
How It Works
On activation (when a workspace contains bin/platform/build.xml), the extension:
- Checks if an index service is already running on the configured port
- If not, spawns the bundled JAR as a child process with
--watch mode
- Waits for the service to become ready (up to 30 seconds)
- Registers all features (search, definitions, hover, tree view, status bar)
The index service handles project detection, indexing, file watching, and serving the REST API. The extension is a thin UI layer that consumes the API.
Source Structure
src/
├── extension.ts # Activation, wires ServiceManager + client + features
├── api/
│ ├── client.ts # HTTP client (Node built-in http, TTL cache, retry)
│ └── types.ts # TS interfaces mirroring Kotlin models
├── service/
│ └── serviceManager.ts # Auto-start/stop index service, process lifecycle
├── features/
│ ├── searchAnywhere.ts # QuickPick content search
│ ├── fileSearch.ts # QuickPick file name search
│ ├── definitionProvider.ts # Go-to-definition for XML + ImpEx
│ ├── hoverProvider.ts # Hover for XML + ImpEx
│ ├── extensionTreeView.ts # Sidebar tree
│ └── statusBar.ts # Connection + stats + start/stop actions
└── util/
├── xmlContext.ts # Detect type code/bean ID at cursor in XML
└── impexContext.ts # Detect type code/attribute at cursor in ImpEx
Zero runtime dependencies — uses only Node.js built-in http module.
Publishing
See PUBLISHING.md for VS Code Marketplace publishing instructions.