{"ref":"capability:ui5-build-tooling","page":"/capabilities/ui5-build-tooling","json":"/capabilities/ui5-build-tooling.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"ui5-build-tooling","name":"Build and dev-server tooling","domain":"developer-experience","ecosystems":["ui5"],"universal":false,"description":"Serving an app locally and building it for deployment — proxying a backend, transpiling, bundling, and shaping the result for whatever will host it.","short":"Serving an app locally and building it for deployment","core_coverage":{"state":"core-and-community","assessed_at":"2026-08-31","what_core_does":"UI5 Tooling provides the CLI, the dev server and the build, and defines the extension points — custom middleware for serving and custom tasks for building.","where_it_stops":"It stops at the extension points. Proxying to a real backend, live reload, zipping for deployment and bundling npm dependencies are all left to middlewares and tasks that others write.","sources":[{"url":"https://github.com/SAP/ui5-tooling","title":"SAP/ui5-tooling — repository","checked":"2026-08-31"}],"relationship":"narrow-by-design","community_adds":"Custom middlewares and tasks on the extension points, from the UI5 community organisation and independent authors: serving and proxying (backend proxies, [the CAP middleware](artifact:ui5-community-ui5-middleware-cap), live reload and hot reload), transpiling, LESS and string replacement, bundling npm dependencies through [ui5-tooling-modules](artifact:ui5-community-ui5-tooling-modules), zipping and deployment steps, and checks on the output. SAP adds extensions of its own beyond the core CLI, such as a [code coverage middleware](artifact:ui5-middleware-code-coverage) and the deprecated [Web Components wrapper tooling](artifact:ui5-tooling-webc)."},"coverage_by_flavor":{"web-components":{"state":"community-only","assessed_at":"2026-09-14","what_core_does":"SAP's UI5 Web Components documentation ships the components as ES6 modules across npm packages, with no CDN, and has the app import and bundle only what it uses through whichever ES6-capable bundler it already runs, naming Vite as the starting point when there is no existing choice.","where_it_stops":"It stops at the packages themselves: the documentation has the app's own bundler do the build, not [UI5 Tooling](artifact:sap-ui5-cli)'s dev server or custom-task extension points. [ui5-tooling-modules](artifact:ui5-community-ui5-tooling-modules), a UI5-door project that states Web Components for this capability, runs the other way — loading `@ui5/webcomponents` packages into a UI5-Tooling build rather than building a Web Components app.","sources":[{"url":"https://ui5.github.io/webcomponents/docs/getting-started/first-steps/","title":"First Steps | UI5 Web Components","checked":"2026-09-14","quote":"There is no CDN for UI5 Web Components."},{"url":"https://github.com/ui5-community/ui5-ecosystem-showcase/tree/main/packages/ui5-tooling-modules","title":"ui5-community/ui5-ecosystem-showcase — README (packages/ui5-tooling-modules)","checked":"2026-09-14","quote":"This allows to load multiple versions of UI5 Web Components into a single application without conflicts."}]}},"history":[{"date":"2026-09-14","field":"coverage_by_flavor.web-components","from":null,"to":"community-only","reason":"ui5-tooling-modules is the only UI5-door artifact that states web-components in its flavors for capability:ui5-build-tooling, and it is community-org; @ui5/cli states freestyle and fiori-elements only. SAP's own UI5 Web Components documentation puts the actual build and bundle step in the host framework's own bundler, not in UI5 Tooling."},{"date":"2026-10-26","field":"core_coverage.community_adds","from":null,"to":"Kinds of middleware and tasks the community and SAP add on the extension points, with the CAP middleware, ui5-tooling-modules, the code coverage middleware and the Web Components wrapper tooling linked.","reason":"Reassessed against the graph (check:capabilities): providers of many kinds arrived after 2026-08-31 and the entry said nothing of what they add. State core-and-community unchanged."},{"date":"2026-10-26","field":"coverage_by_flavor.web-components.where_it_stops","from":"nothing routes the build through UI5 Tooling's dev server or custom-task extension points, and the app's own bundler does that job. The one UI5-door project that states Web Components...","to":"the documentation has the app's own bundler do the build, not UI5 Tooling's dev server or custom-task extension points. ui5-tooling-modules, a UI5-door project that states Web Components...","reason":"Reassessed against the graph (check:capabilities): removed a count (\"the one ... project\") and an absence claim about who built something, restated as a fact about the documentation."}],"drafted_with_ai":true},"sap_delivery":{"door":"ui5","all":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-ui5-cli","name":"@ui5/cli","json":"/artifacts/sap-ui5-cli.json"},{"ref":"artifact:ui5-logger","name":"@ui5/logger","json":"/artifacts/ui5-logger.json"},{"ref":"artifact:ui5-middleware-code-coverage","name":"@ui5/middleware-code-coverage","json":"/artifacts/ui5-middleware-code-coverage.json"},{"ref":"artifact:ui5-tooling-webc","name":"@ui5/tooling-webc","json":"/artifacts/ui5-tooling-webc.json"}]},"by_flavor":{"freestyle":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-ui5-cli","name":"@ui5/cli","json":"/artifacts/sap-ui5-cli.json"}]},"fiori-elements":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-ui5-cli","name":"@ui5/cli","json":"/artifacts/sap-ui5-cli.json"}]},"web-components":null}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:sap-ui5-cli","name":"@ui5/cli","json":"/artifacts/sap-ui5-cli.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:ui5-logger","name":"@ui5/logger","json":"/artifacts/ui5-logger.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:ui5-middleware-code-coverage","name":"@ui5/middleware-code-coverage","json":"/artifacts/ui5-middleware-code-coverage.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:ui5-tooling-webc","name":"@ui5/tooling-webc","json":"/artifacts/ui5-tooling-webc.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:miyasuta-generator-ui5-library-af-deploy","name":"generator-ui5-library-af-deploy","json":"/artifacts/miyasuta-generator-ui5-library-af-deploy.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:carlosorozco88-ui5-tools","name":"UI5 Tools","json":"/artifacts/carlosorozco88-ui5-tools.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:mauriciolauffer-ui5-deployer","name":"ui5-deployer","json":"/artifacts/mauriciolauffer-ui5-deployer.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-ui5-middleware-approuter","name":"ui5-middleware-approuter","json":"/artifacts/ui5-community-ui5-middleware-approuter.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-middleware-cap","name":"ui5-middleware-cap","json":"/artifacts/ui5-community-ui5-middleware-cap.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:preetamkajalrout-ui5-middleware-destination","name":"ui5-middleware-destination","json":"/artifacts/preetamkajalrout-ui5-middleware-destination.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-ui5-middleware-hmr","name":"ui5-middleware-hmr","json":"/artifacts/ui5-community-ui5-middleware-hmr.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-middleware-iasync","name":"ui5-middleware-iasync","json":"/artifacts/ui5-community-ui5-middleware-iasync.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-middleware-index","name":"ui5-middleware-index","json":"/artifacts/ui5-community-ui5-middleware-index.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-middleware-livereload","name":"ui5-middleware-livereload","json":"/artifacts/ui5-community-ui5-middleware-livereload.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:marianfoo-ui5-middleware-odata-recorder","name":"ui5-middleware-odata-recorder","json":"/artifacts/marianfoo-ui5-middleware-odata-recorder.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:maxi1555-ui5-middleware-oidc","name":"ui5-middleware-oidc","json":"/artifacts/maxi1555-ui5-middleware-oidc.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-ui5-middleware-onelogin","name":"ui5-middleware-onelogin","json":"/artifacts/ui5-community-ui5-middleware-onelogin.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:lemaiwo-ui5-middleware-route-proxy","name":"ui5-middleware-route-proxy","json":"/artifacts/lemaiwo-ui5-middleware-route-proxy.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-ui5-middleware-serveframework","name":"ui5-middleware-serveframework","json":"/artifacts/ui5-community-ui5-middleware-serveframework.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-middleware-servestatic","name":"ui5-middleware-servestatic","json":"/artifacts/ui5-community-ui5-middleware-servestatic.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-middleware-simpleproxy","name":"ui5-middleware-simpleproxy","json":"/artifacts/ui5-community-ui5-middleware-simpleproxy.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-middleware-ui5","name":"ui5-middleware-ui5","json":"/artifacts/ui5-community-ui5-middleware-ui5.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-middleware-webjars","name":"ui5-middleware-webjars","json":"/artifacts/ui5-community-ui5-middleware-webjars.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-middleware-websocket","name":"ui5-middleware-websocket","json":"/artifacts/ui5-community-ui5-middleware-websocket.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:marianfoo-ui5-plugin-loader","name":"ui5-plugin-loader","json":"/artifacts/marianfoo-ui5-plugin-loader.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:spreadsheetimporter-ui5-task-btp-manifest","name":"ui5-task-btp-manifest","json":"/artifacts/spreadsheetimporter-ui5-task-btp-manifest.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-task-cachebuster","name":"ui5-task-cachebuster","json":"/artifacts/ui5-community-ui5-task-cachebuster.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:lemaiwo-ui5-task-cachebuster-indexing","name":"ui5-task-cachebuster-indexing","json":"/artifacts/lemaiwo-ui5-task-cachebuster-indexing.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:qualiture-ui5-task-check-eocp","name":"ui5-task-check-eocp","json":"/artifacts/qualiture-ui5-task-check-eocp.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-ui5-task-copyright","name":"ui5-task-copyright","json":"/artifacts/ui5-community-ui5-task-copyright.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:mauriciolauffer-ui5-task-dts-generator","name":"ui5-task-dts-generator","json":"/artifacts/mauriciolauffer-ui5-task-dts-generator.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-ui5-task-flatten-library","name":"ui5-task-flatten-library","json":"/artifacts/ui5-community-ui5-task-flatten-library.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-task-i18ncheck","name":"ui5-task-i18ncheck","json":"/artifacts/ui5-community-ui5-task-i18ncheck.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:mauriciolauffer-ui5-task-minifier","name":"ui5-task-minifier","json":"/artifacts/mauriciolauffer-ui5-task-minifier.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-ui5-task-minify-xml","name":"ui5-task-minify-xml","json":"/artifacts/ui5-community-ui5-task-minify-xml.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-task-pwa-enabler","name":"ui5-task-pwa-enabler","json":"/artifacts/ui5-community-ui5-task-pwa-enabler.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:lemaiwo-ui5-task-transpile-gen","name":"ui5-task-transpile-gen","json":"/artifacts/lemaiwo-ui5-task-transpile-gen.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-ui5-task-zipper","name":"ui5-task-zipper","json":"/artifacts/ui5-community-ui5-task-zipper.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-tooling-less","name":"ui5-tooling-less","json":"/artifacts/ui5-community-ui5-tooling-less.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-tooling-modules","name":"ui5-tooling-modules","json":"/artifacts/ui5-community-ui5-tooling-modules.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-tooling-stringreplace","name":"ui5-tooling-stringreplace","json":"/artifacts/ui5-community-ui5-tooling-stringreplace.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-ui5-tooling-transpile","name":"ui5-tooling-transpile","json":"/artifacts/ui5-community-ui5-tooling-transpile.json","ecosystem":"ui5","origin_ring":"community-org"}],"samples":[{"ref":"artifact:ui5-sample-app","name":"@ui5/sample-app","json":"/artifacts/ui5-sample-app.json"},{"ref":"artifact:ui5-community-showcase-ui5-app","name":"ui5-app","json":"/artifacts/ui5-community-showcase-ui5-app.json"},{"ref":"artifact:ui5-community-showcase-ui5-bookshop-viewer","name":"ui5-bookshop-viewer","json":"/artifacts/ui5-community-showcase-ui5-bookshop-viewer.json"},{"ref":"artifact:marianfoo-ui5-errorhandler-sample","name":"ui5-errorhandler-sample","json":"/artifacts/marianfoo-ui5-errorhandler-sample.json"},{"ref":"artifact:marianfoo-ui5-fe-mockserver-tutorial","name":"ui5-fe-mockserver-tutorial","json":"/artifacts/marianfoo-ui5-fe-mockserver-tutorial.json"},{"ref":"artifact:ui5-community-showcase-ui5-lib","name":"ui5-lib","json":"/artifacts/ui5-community-showcase-ui5-lib.json"},{"ref":"artifact:ui5-community-showcase-ui5-module","name":"ui5-module","json":"/artifacts/ui5-community-showcase-ui5-module.json"},{"ref":"artifact:mariokernich-ui5-monorepo-showcase","name":"ui5-monorepo-showcase","json":"/artifacts/mariokernich-ui5-monorepo-showcase.json"},{"ref":"artifact:ui5-community-ui5-ts-modules-showcase","name":"ui5-ts-modules-showcase","json":"/artifacts/ui5-community-ui5-ts-modules-showcase.json"},{"ref":"artifact:ui5-community-showcase-ui5-tsapp","name":"ui5-tsapp","json":"/artifacts/ui5-community-showcase-ui5-tsapp.json"},{"ref":"artifact:ui5-community-showcase-ui5-tsapp-webc","name":"ui5-tsapp-webc","json":"/artifacts/ui5-community-showcase-ui5-tsapp-webc.json"},{"ref":"artifact:ui5-community-showcase-ui5-tsmodule","name":"ui5-tsmodule","json":"/artifacts/ui5-community-showcase-ui5-tsmodule.json"},{"ref":"artifact:marianfoo-ui5con24-dev-env","name":"ui5con24-dev-env","json":"/artifacts/marianfoo-ui5con24-dev-env.json"}],"explained_by":[{"ref":"content:ui-composition-with-application-frontend-service","name":"UI Composition with Application Frontend Service","json":"/content/ui-composition-with-application-frontend-service.json"},{"ref":"content:how-to-consume-ui5-custom-libraries-in-bas-or-vs-code","name":"How to consume UI5 custom libraries in BAS or VS Code","json":"/content/how-to-consume-ui5-custom-libraries-in-bas-or-vs-code.json"}],"normative_context":[]}}