Build toolBuild tooltypeRuns at build time. Nothing of it ships in the deployed application.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

ui5-plugin-loader

A UI5 Tooling v4 extension that registers a project's other extensions itself: one entry in ui5.yaml, and every dependency carrying a ui5-plugin-loader.json manifest is mounted as middleware and as a build task.

A UI5 project that uses ui5-tooling-transpile, ui5-tooling-modules, ui5-tooling-stringreplace and ui5-middleware-livereload declares each of them in ui5.yaml twice, once as custom middleware for ui5 serve and once as a custom task for ui5 build, in an order that decides whether the result works. This replaces those blocks with ui5-plugin-loader and ui5-plugin-loader-task, scans dependencies and devDependencies for a ui5-plugin-loader.json manifest in each package, falls back to manifests it ships for those four, and sorts what it found by a fixed pattern: stringreplace, transpile, modules, livereload, then everything else. disable takes an extension out of the set and override changes one's order, mount path or configuration before it is registered. It rests on dynamic middleware registration, so UI5 Tooling 4.0 is the floor, and an extension outside the manifests it ships joins in only when its own package carries the file.

Facts

Latestv0.2.0ReleasedLast pushLicenceMIT

Where it sits

Lives in
Provides
Build and dev-server toolingUI5Build and dev-server toolingcapabilityServing an app locally and building it for deployment — proxying a backend, transpiling, bundling, and shaping the result for whatever will host it.

Who is behind it

Marian ZeisMarian ZeisPersonMaintains this
In the atlas: maintains 35, contributes to 86, wrote 25
@marianfoo
maintainer

What it declares

Every artifact

Type
Build tool
Origin
Independently maintained
Runtime
Node.js

As a build tool

Distributed through
npm

Connections1

Install

npm add ui5-plugin-loader

Derived from the package name. No recipe recorded; the README has the configuration.

README

quoted from marianfoo/ui5-plugin-loader under MIT, read
marianfoo/ui5-plugin-loader/README.mdOn GitHub

ui5‑plugin‑loader

A UI5 Tooling v4 extension that auto‑mounts other extensions based on manifest JSON files

Overview

ui5‑plugin‑loader v0.2.x provides a single‑line integration that automatically discovers and loads UI5 tooling extensions based on manifest JSON files. Simply add one entry to your ui5.yaml and all compatible dependencies will be loaded automatically in the correct order.

Features

  • ✅ Single-line setup - Only requires one ui5.yaml entry
  • ✅ Auto-discovery - Scans all dependencies for manifest files
  • ✅ Smart ordering - Fixed pattern ordering: stringreplace → transpile → modules → livereload → rest
  • ✅ Server & Build support - Works with both ui5 serve and ui5 build
  • ✅ Fallback manifests - Includes manifests for popular extensions
  • ✅ Disable/Override support - Disable extensions or override their configuration
  • ✅ Graceful failure - Invalid manifests won't crash your dev server
  • ✅ Comprehensive logging - Uses @ui5/logger with configurable levels

Requirements

  • UI5 Tooling v4.0 or higher (for dynamic middleware registration)
  • Node.js v18.0.0 or higher
  • npm v8 or higher

Installation

npm install --save-dev ui5-plugin-loader

Quick Start

1. Add to your ui5.yaml
specVersion: '4.0'
metadata:
  name: my-ui5-app
type: application

server:
  customMiddleware:
    - name: ui5-plugin-loader
      afterMiddleware: compression

builder:
  customTasks:
    - name: ui5-plugin-loader-task
      afterTask: replaceVersion
2. Install extensions

Install any supported UI5 tooling extension:

npm install --save-dev ui5-tooling-modules
npm install --save-dev ui5-middleware-livereload
npm install --save-dev ui5-tooling-transpile
npm install --save-dev ui5-tooling-stringreplace
3. Run your project
ui5 serve  # or ui5 build

That's it! The plugin loader will automatically:

  1. Scan all your dependencies and devDependencies
  2. Look for ui5-plugin-loader.json manifests in each package
  3. Fall back to built-in manifests for popular extensions
  4. Auto-register all found middlewares and tasks with smart ordering

Currently Supported Extensions

The plugin loader includes built-in support for these popular UI5 tooling extensions:

Middlewares
  • ui5-tooling-stringreplace - String replacement for placeholders
  • ui5-tooling-transpile - TypeScript and modern JavaScript transpilation
  • ui5-tooling-modules - ES modules and Node.js modules transformation
  • ui5-middleware-livereload - Live reload functionality for development
Tasks
  • ui5-tooling-stringreplace - Build-time string replacement
  • ui5-tooling-transpile - Build-time TypeScript transpilation
  • ui5-tooling-modules - Build-time modules transformation
Adding More Extensions

To add support for additional extensions, create a manifest file in the manifests/ directory or contribute to this project by submitting a PR with new manifest files.

How It Works

The plugin loader follows this discovery and processing pipeline:

  1. Load Configuration: Validate and normalize the configuration options
  2. Discover Manifests: Scan dependencies for manifest files
  3. Apply Disable: Remove extensions from the disable list
  4. Fill Defaults: Add default afterMiddleware: compression and afterTask: replaceVersion
  5. Apply Overrides: Merge override configurations
  6. Validate References: Check that all after/before targets exist
  7. Deduplicate: Remove duplicates (first occurrence wins)
  8. Smart Sort: Apply fixed pattern ordering: stringreplace → transpile → modules → livereload → rest

Configuration Options

You can customize the plugin loader behavior in your ui5.yaml:

server:
  customMiddleware:
    - name: ui5-plugin-loader
      afterMiddleware: compression
      configuration:
        debug: false                            # Enable debug logging
        disable:                               # Disable specific extensions
          - ui5-middleware-livereload
          - ui5-tooling-stringreplace-middleware
        override:                             # Override extension configurations
          ui5-tooling-transpile-middleware:
            afterMiddleware: ui5-tooling-stringreplace-middleware
            configuration:
              debug: true

builder:
  customTasks:
    - name: ui5-plugin-loader-task
      afterTask: replaceVersion
      configuration:
        debug: false                            # Enable debug logging
        disable:                               # Disable specific extensions
          - ui5-tooling-stringreplace-task
        override:                             # Override extension configurations
          ui5-tooling-modules-task:
            afterTask: ui5-tooling-transpile-task
            configuration:
              debug: true
Configuration Properties
  • debug (boolean, default: false): Enable debug logging to @ui5/logger verbose
  • disable (string[], default: []): Array of extension names to disable
  • override (object, default: {}): Override configurations for specific extensions
    • Each key is an extension name
    • Each value can contain:
      • afterMiddleware/beforeMiddleware - Change middleware order
      • afterTask/beforeTask - Change task order
      • mountPath - Override middleware mount path
      • configuration - Merge with extension's default configuration

Example Configurations

Basic Development Setup
server:
  customMiddleware:
    - name: ui5-plugin-loader
      afterMiddleware: compression
TypeScript Development with Customization
server:
  customMiddleware:
    - name: ui5-plugin-loader
      afterMiddleware: compression
      configuration:
        debug: true
        disable:
          - ui5-middleware-livereload  # Disable livereload
        override:
          ui5-tooling-stringreplace-middleware:
            configuration:
              files: ["**/*.ts"]       # Only process TypeScript files
Production Build Configuration
builder:
  customTasks:
    - name: ui5-plugin-loader-task
      afterTask: replaceVersion
      configuration:
        disable:
          - ui5-tooling-stringreplace-task  # Skip string replacement in production
        override:
          ui5-tooling-modules-task:
            configuration:
              minify: true                  # Enable minification

Smart Ordering

The plugin loader uses a fixed pattern ordering system:

  1. String replacement (priority 10) - ui5-tooling-stringreplace-*
  2. Transpilation (priority 20) - ui5-tooling-transpile-*
  3. Modules (priority 30) - ui5-tooling-modules-*
  4. Live reload (priority 40) - ui5-middleware-livereload
  5. Rest (priority 50) - All other extensions

This ensures that transformations happen in the correct order without manual configuration.

Extension Development Guide

Making Your Extension Compatible

To make your UI5 tooling extension work with the plugin loader:

  1. Create a manifest file ui5-plugin-loader.json in your package root:
{
  "$schema": "https://sap.github.io/ui5-plugin-loader/schema/ui5-plugin-loader.schema.json",
  "middleware": [
    {
      "name": "my-custom-middleware",
      "configuration": {
        "debug": false
      }
    }
  ],
  "tasks": [
    {
      "name": "my-custom-task",
      "configuration": {
        "debug": false
      }
    }
  ]
}
  1. Follow naming conventions:

    • Middleware: <package-name>-middleware or <package-name>
    • Tasks: <package-name>-task
  2. Test with the plugin loader:

    • Install your extension alongside ui5-plugin-loader
    • Verify it gets auto-discovered and registered

Troubleshooting

Enable Debug Logging
server:
  customMiddleware:
    - name: ui5-plugin-loader
      configuration:
        debug: true
Common Issues
  1. Extension not found: Ensure the package is in your dependencies or devDependencies
  2. Wrong order: Use the override configuration to adjust ordering
  3. Duplicate registration: Check for manual registrations in your ui5.yaml

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new functionality
  4. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Changelog

v0.2.x
  • ✅ Removed preset functionality (breaking change)
  • ✅ Added debug, disable, and override configuration options
  • ✅ Implemented fixed pattern smart ordering
  • ✅ Improved pipeline processing with validation
  • ✅ Enhanced error handling and logging
v0.1.x
  • ✅ Initial release with basic auto-discovery
  • ✅ Support for popular UI5 tooling extensions
  • ✅ Preset functionality (deprecated in v0.2.x)
MIT, read

History

Latest

v0.2.0

0downloads per week, npm
Weekly downloads for ui5-plugin-loader26 complete calendar weeks from 2026-04-27 to 2026-10-25; the latest total is 0.27 Apr – 3 May: 04 May – 10 May: 311 May – 17 May: 118 May – 24 May: 425 May – 31 May: 21 Jun – 7 Jun: 58 Jun – 14 Jun: 215 Jun – 21 Jun: 222 Jun – 28 Jun: 329 Jun – 5 Jul: 26 Jul – 12 Jul: 413 Jul – 19 Jul: 020 Jul – 26 Jul: 327 Jul – 2 Aug: 13 Aug – 9 Aug: 210 Aug – 16 Aug: 217 Aug – 23 Aug: 124 Aug – 30 Aug: 531 Aug – 6 Sept: 27 Sept – 13 Sept: 314 Sept – 20 Sept: 421 Sept – 27 Sept: 228 Sept – 4 Oct: 25 Oct – 11 Oct: 112 Oct – 18 Oct: 119 Oct – 25 Oct: 0
Build and dev-server tooling
  1. UI5 ToolsVS Code extension to serve, proxy, build and deploy UI5 projects
  2. ui5-middleware-route-proxyUI5 server middleware proxying route prefixes to a backend
  3. ui5-task-cachebuster-indexingUI5 builder task preparing build output for the cachebuster
  4. ui5-task-transpile-genUI5 builder task transpiling ES6 to ES5 with Babel
  5. ui5-middleware-odata-recorderUI5 middleware recording OData traffic as mock server datasets
  6. ui5-deployerUI5 Tooling module deploying Fiori/UI5 apps to SAP systems
  7. ui5-task-dts-generatorUI5 builder task generating d.ts type declarations
  8. ui5-task-minifierUI5 builder task minifying HTML, CSS and JSON files
  9. ui5-middleware-oidcUI5 dev server middleware adding an OpenID Connect login
  10. generator-ui5-library-af-deployYeoman generator for Application Frontend config in UI5 libraries
  11. ui5-middleware-destinationUI5 Tooling middleware proxying destinations and neo-app.json routes
  12. ui5-task-check-eocpUI5 build task warning when the app's UI5 version reaches EOCP
  13. @ui5/cliUI5 Tooling command line for project setup, dev server and build
  14. ui5-task-btp-manifestUI5 Tooling task writing the service name into the importer manifest
  15. ui5-middleware-approuterUI5 CLI middleware proxying the dev server through @sap/approuter
  16. ui5-middleware-capUI5 CLI middleware running a CDS server inside the UI5 dev server
  17. ui5-middleware-hmrExperimental UI5 middleware for hot module replacement
  18. ui5-middleware-iasyncUI5 middleware syncing interactions across browsers over websocket
  19. ui5-middleware-indexUI5 middleware serving a chosen welcome page at the root path
  20. ui5-middleware-livereloadLive reload middleware for the UI5 dev server
  21. ui5-middleware-oneloginUI5 middleware logging in with Playwright and reusing the session
  22. ui5-middleware-serveframeworkUI5 middleware serving a locally built UI5 framework
  23. ui5-middleware-servestaticUI5 middleware serving static resources from a path or npm package
  24. ui5-middleware-simpleproxyDev-server middleware proxying requests to a backend system
  25. ui5-middleware-ui5UI5 middleware including one UI5 application in another
  26. ui5-middleware-webjarsUI5 middleware serving static resources from JAR files (WebJars)
  27. ui5-middleware-websocketWebSocket support for Express-based dev servers such as UI5's
  28. ui5-task-cachebusterUI5 builder task cachebusting standalone UI5 applications
  29. ui5-task-copyrightUI5 builder task appending copyright headers to source files
  30. ui5-task-flatten-libraryUI5 builder task flattening library output for SAP NetWeaver
  31. ui5-task-i18ncheckUI5 builder task checking XML views for missing i18n texts
  32. ui5-task-minify-xmlUI5 builder task minifying XML views and fragments
  33. ui5-task-pwa-enablerUI5 builder task turning a UI5 app into a progressive web app
  34. ui5-task-zipperBuild task packaging the UI5 build result as a zip archive
  35. ui5-tooling-lessUI5 CLI extension compiling Less files into CSS
  36. ui5-tooling-modulesUI5 tooling extensions loading npm packages as UI5 modules
  37. ui5-tooling-stringreplaceUI5 CLI extension for string replacement during the build
  38. ui5-tooling-transpileUI5 CLI extension transpiling code during the UI5 build
  39. @ui5/loggerInternal logger of the UI5 CLI
  40. @ui5/middleware-code-coverageUI5 CLI middleware for Istanbul code coverage
  41. @ui5/tooling-webcDeprecated UI5 Tooling extensions for UI5 Web Components wrappers

Details

Sources4
GitHub organisations and accountsdiscovered here, marianfoochecked
npm registry, ui5-plugin-loaderversion, releases, installschecked
github.com/git+https://github.com/marianzeis/ui5-plugin-loader.gittree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
runtimesnode
latestv0.2.0
first release
releases and cadence1
discovered viaGitHub organisations and accounts · marianfoo
first seen in the atlas
ecosystem and domainui5, developer-experience
History in the atlas2
  1. build-tool and capability:ui5-build-tooling for the same reason its four named neighbours carry them: it is registered in the customMiddleware and customTasks blocks of ui5.yaml and does its work inside `ui5 serve` and `ui5 build`. compat.runtimes is the README's Requirements section, "**Node.js v18.0.0 or higher**"; identity.license is the README's License section and the npm record, both MIT. No flavors: the README states no UI5 flavor, and absent is not a claim. One discrepancy for an editor rather than the entry: the npm record for ui5-plugin-loader 0.2.0, published 2025-07-23, gives its repository as git+https://github.com/marianzeis/ui5-plugin-loader.git, while the source read here is github.com/marianfoo/ui5-plugin-loader; the npm description, "Auto-mounts UI5 tooling extensions based on manifest JSON files", and the 0.2.x version line both match this README.
  2. First seen.
For your agent
Ref
artifact:marianfoo-ui5-plugin-loader
JSON
/artifacts/marianfoo-ui5-plugin-loader.json
MCP
Connecting an agent