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 projectsfrom UI5
  2. ui5-middleware-route-proxyUI5 server middleware proxying route prefixes to a backendfrom UI5
  3. ui5-task-cachebuster-indexingUI5 builder task preparing build output for the cachebusterfrom UI5
  4. ui5-task-transpile-genUI5 builder task transpiling ES6 to ES5 with Babelfrom UI5
  5. ui5-middleware-odata-recorderUI5 middleware recording OData traffic as mock server datasetsfrom UI5
  6. ui5-deployerUI5 Tooling module deploying Fiori/UI5 apps to SAP systemsfrom UI5
  7. ui5-task-dts-generatorUI5 builder task generating d.ts type declarationsfrom UI5
  8. ui5-task-minifierUI5 builder task minifying HTML, CSS and JSON filesfrom UI5
  9. ui5-middleware-oidcUI5 dev server middleware adding an OpenID Connect loginfrom UI5
  10. generator-ui5-library-af-deployYeoman generator for Application Frontend config in UI5 librariesfrom UI5
  11. ui5-middleware-destinationUI5 Tooling middleware proxying destinations and neo-app.json routesfrom UI5
  12. ui5-task-check-eocpUI5 build task warning when the app's UI5 version reaches EOCPfrom UI5
  13. @ui5/cliUI5 Tooling command line for project setup, dev server and buildfrom UI5
  14. ui5-task-btp-manifestUI5 Tooling task writing the service name into the importer manifestfrom UI5
  15. ui5-middleware-approuterUI5 CLI middleware proxying the dev server through @sap/approuterfrom UI5
  16. ui5-middleware-capUI5 CLI middleware running a CDS server inside the UI5 dev serverfrom UI5
  17. ui5-middleware-hmrExperimental UI5 middleware for hot module replacementfrom UI5
  18. ui5-middleware-iasyncUI5 middleware syncing interactions across browsers over websocketfrom UI5
  19. ui5-middleware-indexUI5 middleware serving a chosen welcome page at the root pathfrom UI5
  20. ui5-middleware-livereloadLive reload middleware for the UI5 dev serverfrom UI5
  21. ui5-middleware-oneloginUI5 middleware logging in with Playwright and reusing the sessionfrom UI5
  22. ui5-middleware-serveframeworkUI5 middleware serving a locally built UI5 frameworkfrom UI5
  23. ui5-middleware-servestaticUI5 middleware serving static resources from a path or npm packagefrom UI5
  24. ui5-middleware-simpleproxyDev-server middleware proxying requests to a backend systemfrom UI5
  25. ui5-middleware-ui5UI5 middleware including one UI5 application in anotherfrom UI5
  26. ui5-middleware-webjarsUI5 middleware serving static resources from JAR files (WebJars)from UI5
  27. ui5-middleware-websocketWebSocket support for Express-based dev servers such as UI5'sfrom UI5
  28. ui5-task-cachebusterUI5 builder task cachebusting standalone UI5 applicationsfrom UI5
  29. ui5-task-copyrightUI5 builder task appending copyright headers to source filesfrom UI5
  30. ui5-task-flatten-libraryUI5 builder task flattening library output for SAP NetWeaverfrom UI5
  31. ui5-task-i18ncheckUI5 builder task checking XML views for missing i18n textsfrom UI5
  32. ui5-task-minify-xmlUI5 builder task minifying XML views and fragmentsfrom UI5
  33. ui5-task-pwa-enablerUI5 builder task turning a UI5 app into a progressive web appfrom UI5
  34. ui5-task-zipperBuild task packaging the UI5 build result as a zip archivefrom UI5
  35. ui5-tooling-lessUI5 CLI extension compiling Less files into CSSfrom UI5
  36. ui5-tooling-modulesUI5 tooling extensions loading npm packages as UI5 modulesfrom UI5
  37. ui5-tooling-stringreplaceUI5 CLI extension for string replacement during the buildfrom UI5
  38. ui5-tooling-transpileUI5 CLI extension transpiling code during the UI5 buildfrom UI5
  39. @ui5/loggerInternal logger of the UI5 CLIfrom UI5
  40. @ui5/middleware-code-coverageUI5 CLI middleware for Istanbul code coveragefrom UI5
  41. @ui5/tooling-webcDeprecated UI5 Tooling extensions for UI5 Web Components wrappersfrom UI5

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