### UI5 CLI Serve Example Source: https://github.com/ui5/cli/blob/main/internal/documentation/scripts/resources/CLI.template.md Example of starting a local development server using the UI5 CLI. This is useful for testing applications during development. ```sh ui5 serve --port 8080 ``` -------------------------------- ### Example: Run Benchmarks with Example Config Source: https://github.com/ui5/cli/blob/main/internal/benchmark/README.md Initiates benchmarks using the example configuration file located in the current directory. ```bash # Run benchmarks using example config in current directory ui5-cli-benchmark run config/.example.yaml ``` -------------------------------- ### Install Dependencies with npm Source: https://github.com/ui5/cli/blob/main/examples/browsersync/README.md Run this command to install all project dependencies required for the UI5 CLI and Browsersync setup. ```sh npm install ``` -------------------------------- ### Start UI5 Server with npm Source: https://github.com/ui5/cli/blob/main/examples/browsersync/README.md Execute this command to start the UI5 development server, which includes Browsersync for live-reloading. ```sh npm start ``` -------------------------------- ### Example: Run Benchmarks in Specific Project Directories Source: https://github.com/ui5/cli/blob/main/internal/benchmark/README.md Executes benchmarks using the example configuration file across specified project directories. ```bash # Run benchmarks in specific project directories ui5-cli-benchmark run config/.example.yaml /path/to/project1 /path/to/project2 ``` -------------------------------- ### UI5 CLI Project Type Examples Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Configuration.md Examples demonstrating the 'type' property for different UI5 project types. ```yaml specVersion: "5.0" type: component ``` ```yaml specVersion: "5.0" type: application ``` ```yaml specVersion: "5.0" type: library ``` ```yaml specVersion: "5.0" type: theme-library ``` ```yaml specVersion: "5.0" type: module ``` -------------------------------- ### Verify UI5 CLI Setup Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Benchmarking.md Check the installed UI5 CLI version and its location to confirm the setup. ```sh ui5 --version ``` -------------------------------- ### Install Dependencies and Run Unit Tests Source: https://github.com/ui5/cli/blob/main/internal/e2e-tests/README.md Installs project dependencies and executes unit tests for the UI5 CLI. ```bash npm install npm run unit ``` -------------------------------- ### UI5 CLI Project Metadata Example Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Configuration.md An example of the 'metadata' section in ui5.yaml, including name and copyright information. ```yaml metadata: name: my.company.project copyright: |- My Project * (c) Copyright 2009-${currentYear} My Company * Licensed under the XYZ License, Version n - see LICENSE.txt. ``` -------------------------------- ### Extension Configuration Example Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Configuration.md Example of how to configure an extension, specifically a project-shim, within the ui5.yaml file. Extensions are identified by `kind: extension` and should follow the main project configuration. ```yaml specVersion: "5.0" type: application metadata: name: my.application --- specVersion: "5.0" kind: extension type: project-shim metadata: name: my.application.thirdparty shims: configurations: lodash: specVersion: "5.0" type: module metadata: name: lodash resources: configuration: paths: /resources/my/application/thirdparty/: "" ``` -------------------------------- ### Install UI5 CLI Globally Source: https://github.com/ui5/cli/blob/main/internal/documentation/scripts/resources/CLI.template.md Install the UI5 CLI globally using npm. This makes the command available system-wide. Verify the installation by running the help command. ```sh npm install --global @ui5/cli # Verify installation ui5 --help ``` -------------------------------- ### Install UI5 CLI Globally and Locally Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/GettingStarted.md Install the UI5 CLI globally for command availability and locally as a development dependency in your project. Verify the installation using the help command. ```sh npm install --global @ui5/cli ``` ```sh npm install --save-dev @ui5/cli ``` ```sh ui5 --help ``` -------------------------------- ### UI5 CLI Deploy Example Source: https://github.com/ui5/cli/blob/main/internal/documentation/scripts/resources/CLI.template.md Example of deploying a UI5 application using the UI5 CLI. This command uploads the application to a target system. ```sh ui5 deploy --url https://: --path webapp --credentials ``` -------------------------------- ### Install UI5 CLI Benchmark Tool Globally Source: https://github.com/ui5/cli/blob/main/internal/benchmark/README.md Make the ui5-cli-benchmark binary available globally by linking it. ```bash npm link ``` -------------------------------- ### UI5 CLI Create Project Example Source: https://github.com/ui5/cli/blob/main/internal/documentation/scripts/resources/CLI.template.md Example of creating a new UI5 project using the UI5 CLI. This command scaffolds a new application based on a template. ```sh ui5 init --type=application --name=my-app ``` -------------------------------- ### Allowed Project and Extension Names Examples Source: https://github.com/ui5/cli/blob/main/rfcs/0012-UI5-Tooling-Extension-API-3.md Examples of valid names for UI5 CLI projects and extensions adhering to the specified restrictions. ```string sky.app ``` ```string @org/heavy.lib ``` ```string ui5-task-fearless-rock ``` ```string ui5-middleware-fluffy-star ``` -------------------------------- ### Install UI5 CLI Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/index.md Install the UI5 CLI globally or as a development dependency in your project. ```sh # Global npm install --global @ui5/cli # In your project npm install --save-dev @ui5/cli ``` -------------------------------- ### Example Usage of TaskUtil Source: https://github.com/ui5/cli/blob/main/rfcs/0008-resource-tagging-during-build.md Demonstrates how to use TaskUtil to set, clear, and get tags on a resource. Requires importing `OmitFromBuildResult` from `taskUtil.STANDARD_TAGS`. ```javascript const {OmitFromBuildResult} = taskUtil.STANDARD_TAGS; taskUtil.setTag(resource, OmitFromBuildResult, true); taskUtil.clearTag(resource, OmitFromBuildResult); taskUtil.getTag(resource, OmitFromBuildResult); ``` -------------------------------- ### UI5 CLI Build Example Source: https://github.com/ui5/cli/blob/main/internal/documentation/scripts/resources/CLI.template.md Example of building a UI5 application using the UI5 CLI. This command is typically used in CI environments or for production builds. ```sh ui5 build --dest dist ``` -------------------------------- ### Start UI5 Development Server Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/index.md Launch a local development server to test and work on your UI5 application. ```sh ❯ ui5 serve Server started URL: http://localhost:8080 ``` -------------------------------- ### Configure OpenUI5 Library in ui5.yaml Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/OpenUI5.md Example `ui5.yaml` configuration for an OpenUI5 library. Includes optional libraries and specifies the framework name and version. ```yaml specVersion: "5.0" type: library metadata: name: some.library framework: name: OpenUI5 version: 1.76.0 libraries: - name: sap.ui.core - name: themelib_sap_belize optional: true - name: themelib_sap_bluecrystal optional: true - name: themelib_sap_fiori_3 optional: true ``` -------------------------------- ### UI5 CLI Add Dependency Example Source: https://github.com/ui5/cli/blob/main/internal/documentation/scripts/resources/CLI.template.md Example of adding a UI5 dependency to a project using npm. ```sh npm install --save-dev @ui5/cli ``` -------------------------------- ### Start UI5 CLI Dev Server Source: https://github.com/ui5/cli/blob/main/internal/documentation/README.md Starts the VitePress development server for live editing. Opens the browser automatically by default. ```bash # Start the dev server (opens browser automatically) npm start ``` ```bash # Or without auto-opening the browser npm run dev ``` -------------------------------- ### Start Local Development Server Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/GettingStarted.md Launch a local development server to work on your UI5 project. This command serves your project files and enables live reloading. ```sh ui5 serve ``` -------------------------------- ### Install UI5 CLI Globally Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/updates/migrate-v2.md Run this command to upgrade your global UI5 CLI installation to the latest version. ```bash npm install --global @ui5/cli ``` -------------------------------- ### UI5 CLI Test Example Source: https://github.com/ui5/cli/blob/main/internal/documentation/scripts/resources/CLI.template.md Example of running tests for a UI5 application using the UI5 CLI. This command executes the defined test suite. ```sh ui5 test --grep "@ui5/core" ``` -------------------------------- ### UI5 Application with Project Shim Configuration Source: https://github.com/ui5/cli/blob/main/rfcs/0002-project-shims.md Example `ui5.yaml` for an application that includes a 'project-shim' extension to configure and manage legacy libraries. ```yaml specVersion: "0.1" type: application metadata: name: application.a ---- ``` ```yaml specVersion: "0.1" kind: extension type: project-shim metadata: name: legacy-lib-shims shims: configurations: legacy-library-a: specVersion: "0.1" type: library metadata: name: legacy.library.a legacy-library-b: specVersion: "0.1" type: library metadata: name: legacy.library.b legacy-library-x: specVersion: "0.1" type: library metadata: name: legacy.library.x dependencies: legacy-library-a: - legacy-library-b - legacy-library-x legacy-library-b: - legacy-library-x collections: legacy-libs: modules: legacy-library-a: src/library.a legacy-library-b: src/library.b ``` -------------------------------- ### Configure OpenUI5 Application in ui5.yaml Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/OpenUI5.md Example `ui5.yaml` configuration for an OpenUI5 application. Specifies the framework name, version, and a list of required libraries. ```yaml specVersion: "5.0" type: application metadata: name: some.project.name framework: name: OpenUI5 version: 1.76.0 libraries: - name: sap.ui.core - name: sap.m - name: sap.ui.table - name: themelib_sap_fiori_3 ``` -------------------------------- ### Install UI5 CLI Locally Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/updates/migrate-v2.md Execute this command to upgrade the UI5 CLI installation within your project to version 2 or higher. ```bash npm install --save-dev @ui5/cli@^2 ``` -------------------------------- ### Library ui5.yaml Configuration Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/SAPUI5.md Example `ui5.yaml` configuration for an SAPUI5 library, specifying framework name, version, and optional libraries. ```yaml specVersion: "5.0" type: library metadata: name: some.library framework: name: SAPUI5 version: 1.82.0 libraries: - name: sap.ui.core - name: themelib_sap_belize optional: true - name: themelib_sap_bluecrystal optional: true - name: themelib_sap_fiori_3 optional: true ``` -------------------------------- ### UI5 CLI Help Command Source: https://github.com/ui5/cli/blob/main/internal/documentation/scripts/resources/CLI.template.md Example of displaying the help information for the UI5 CLI. This provides an overview of available commands and options. ```sh ui5 --help ``` -------------------------------- ### Install Latest UI5 CLI Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/updates/migrate-v4.md Install the latest version of UI5 CLI globally or as a dev dependency in your project. ```bash npm i --save-dev @ui5/cli@latest ``` ```bash npm i --global @ui5/cli@latest ``` -------------------------------- ### Disallowed Project and Extension Names Examples Source: https://github.com/ui5/cli/blob/main/rfcs/0012-UI5-Tooling-Extension-API-3.md Examples of invalid names for UI5 CLI projects and extensions that violate the naming restrictions. ```string 笑.app ``` ```string Heavy Lib ``` ```string ui5~task/fearless-rock ``` -------------------------------- ### Multiple UI5 Workspace Configurations Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Workspace.md Example of a `ui5-workspace.yaml` file containing multiple workspace configurations separated by '---'. Each configuration can specify different local dependencies. ```yaml specVersion: workspace/1.0 metadata: name: default dependencyManagement: resolutions: - path: ../heavy.library --- specVersion: workspace/1.0 metadata: name: extended dependencyManagement: resolutions: - path: ../heavy.library - path: ../light.library - path: ../test.library ``` -------------------------------- ### Example UI5 CLI Command Source: https://github.com/ui5/cli/blob/main/internal/documentation/scripts/resources/CLI.template.md This is a placeholder for common UI5 CLI commands. Refer to specific command documentation for detailed usage. ```sh {{common}} ``` -------------------------------- ### Example .ui5rc File Structure Source: https://github.com/ui5/cli/blob/main/rfcs/0013-configuration.md This JSON structure represents the content of the .ui5rc file, which stores global UI5 CLI configuration settings. ```json { "dataDir": "~/.ui5", "mavenSnapshotEndpointUrl": "https:///artifactory/build-snapshots/" } ``` -------------------------------- ### Application ui5.yaml Configuration Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/SAPUI5.md Example `ui5.yaml` configuration for an SAPUI5 application, specifying framework name, version, and required libraries. ```yaml specVersion: "5.0" type: application metadata: name: some.project.name framework: name: SAPUI5 version: 1.82.0 libraries: - name: sap.ui.core - name: sap.m - name: sap.ui.comp - name: sap.ushell development: true - name: themelib_sap_fiori_3 ``` -------------------------------- ### Configure ui5.yaml with specVersion 2.0 Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/updates/migrate-v2.md Example of a `ui5.yaml` file updated to use `specVersion: "2.0"`. This version is required for new features. ```yaml specVersion: "2.0" metadata: name: type: ``` -------------------------------- ### UI5 Project Configuration (specVersion 1.0) Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/updates/migrate-v1.md Example of a UI5 project configuration file using the new specification version 1.0. This version is required for new features. ```yaml specVersion: "1.0" metadata: name: type: ``` -------------------------------- ### Configure Custom Build Task with Build Phase Source: https://github.com/ui5/cli/blob/main/rfcs/0012-UI5-Tooling-Extension-API-3.md Example of how to configure a custom build task within the ui5.yaml file, specifying its phase and execution order. ```yaml specVersion: "2.6" kind: project type: application metadata: name: my.application server: customTasks: - name: generateMarkdownFiles phase: post-build phase-order: start ``` -------------------------------- ### Custom Tool Configuration Example Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Configuration.md Stores UI5-specific configuration for third-party tools. This configuration is ignored by UI5 CLI and applies to projects with Specification Version 2.1 or higher. ```yaml customConfiguration: myTool: key: value myOtherTool: otherKey: otherValue ``` -------------------------------- ### UI5 CLI v4 Bundle Configuration Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/updates/migrate-v4.md Example of a bundle definition in `ui5.yaml` for UI5 CLI v4, showcasing the new `async: true` option for require sections. ```yaml builder: bundles: - bundleDefinition: name: "app.js" sections: - mode: require filters: - some/app/Component.js resolve: true sort: true async: true ``` -------------------------------- ### Initialize UI5 Project Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/index.md Set up a new UI5 project by initializing the configuration file. ```sh ❯ ui5 init Wrote ui5.yaml: specVersion: "5.0" metadata: name: my-app type: application ``` -------------------------------- ### Napa Dependency Installation in package.json Source: https://github.com/ui5/cli/blob/main/rfcs/0002-project-shims.md Example of using 'napa' to install Git repositories that lack a `package.json`. The `ui5-project` module can detect and resolve dependencies defined in the 'napa' section. ```json { "scripts": { "install": "napa" }, "napa": { "legacy-libs": "", "legacy-library-x": "" } } ``` -------------------------------- ### Navigate to Sample App Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Benchmarking.md Navigate into the cloned sample-app directory. ```sh cd sample-app ``` -------------------------------- ### Start UI5 CLI Server with HTTP/2 Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Overview.md Enable the HTTP/2 protocol for the UI5 CLI development webserver using the --h2 flag. This requires an SSL certificate, and the CLI can guide you through its automatic generation. ```sh ui5 serve --h2 ``` -------------------------------- ### Build UI5 CLI Static Site Source: https://github.com/ui5/cli/blob/main/internal/documentation/README.md Builds the static documentation site into the `dist/` directory. Ensure prerequisite generation scripts are run first. ```bash build:vitepress ``` -------------------------------- ### Install UI5 CLI v5 Alpha Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/updates/migrate-v5.md Install the alpha release of UI5 CLI v5 locally or globally using npm. ```bash npm i --save-dev @ui5/cli@next ``` ```bash npm i --global @ui5/cli@next ``` -------------------------------- ### Upgrade Local UI5 CLI Installation Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/updates/migrate-v1.md Execute this command to upgrade the UI5 CLI installation within your project to version 1.x. ```bash npm install @ui5/cli@^1 ``` -------------------------------- ### Initialize npm in an Existing Project Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/GettingStarted.md If your project does not have a `package.json` file, use this command to generate one using npm's default settings. ```sh npm init --yes ``` -------------------------------- ### Run UI5 CLI Benchmarks Source: https://github.com/ui5/cli/blob/main/internal/benchmark/README.md Execute benchmarks using a specified configuration file and optional project directories. ```bash ui5-cli-benchmark run [...] ``` -------------------------------- ### Install UI5 CLI Dependencies Source: https://github.com/ui5/cli/blob/main/AGENTS.md Installs project dependencies using npm ci with strict engine checks. Ensure your Node.js version meets the project's requirements. ```bash npm ci --engine-strict ``` -------------------------------- ### Search Functionality Example Source: https://github.com/ui5/cli/blob/main/packages/server/lib/middleware/serveIndex/directory.html A JavaScript example demonstrating how to implement a live search filter on a list of elements. It highlights the use of the custom DOM utility functions for adding and removing CSS classes. ```javascript function search() { let str = $("search").value.toLowerCase(); let links = $("files").all("a"); links.each(function(link) { let text = link.textContent.toLowerCase(); if (".." === text) return; if (str.length && ~text.indexOf(str)) { link.addClass("highlight"); } else { link.removeClass("highlight"); } }); } ``` ```javascript $(window).on("content loaded", function() { $("search").on("keyup", search); }); ``` -------------------------------- ### Get Project Dependencies Source: https://github.com/ui5/cli/blob/main/rfcs/0009-ui5-project-refactoring.md Retrieves an array of project names that are direct dependencies of a given project. ```javascript /** * Get all direct dependencies of a project as an array of project names * * @public * @param {string} projectName Name of the project to retrieve the dependencies of * @returns {string[]} Project names of the given project's dependencies */ getDependencies(projectName) {} ``` -------------------------------- ### Get All Extensions Source: https://github.com/ui5/cli/blob/main/rfcs/0009-ui5-project-refactoring.md Retrieves all extensions in the graph as a nested array of extension name and instance pairs. ```javascript /** * Get all extensions as a nested array containing pairs of extension name and -instance. * * @public * @returns {Array>} */ getAllExtensions() {} ``` -------------------------------- ### Perform Change Measurement (Windows) Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Benchmarking.md Run the benchmark for the UI5 CLI 'build' command after applying your changes on Windows, using hyperfine. Results are exported to 'my_change.md'. ```bat set UI5_CLI_NO_LOCAL=X hyperfine --warmup 1 "node C:\my\home\UI5\cli\packages\cli\bin\ui5.cjs build" --export-markdown ./my_change.md ``` -------------------------------- ### Get Specific Extension Source: https://github.com/ui5/cli/blob/main/rfcs/0009-ui5-project-refactoring.md Retrieves a specific extension from the graph by its name. Returns undefined if the extension is not found. ```javascript /** * @public * @param {string} extensionName Name of the extension to retrieve * @returns {module:@ui5/project.specification.Extension|undefined} * Extension instance or undefined if the extension is unknown to the graph */ getExtension(extensionName) {} ``` -------------------------------- ### Get All Projects Source: https://github.com/ui5/cli/blob/main/rfcs/0009-ui5-project-refactoring.md Retrieves all projects currently in the graph as a nested array of project name and instance pairs. ```javascript /** * Get all projects as a nested array containing pairs of project name and -instance. * * @public * @returns {Array>} */ getAllProjects() {} ``` -------------------------------- ### Build UI5 Project for Production Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/index.md Generate an optimized build of your UI5 project for deployment. ```bash ❯ ui5 build info graph:helpers:ui5Framework Using OpenUI5 version: 1.117.0 info ProjectBuilder Preparing build for project my-app info ProjectBuilder Target directory: ./dist info ProjectBuilder Cleaning target directory... info Project 1 of 1: ❯ Building application project my-app... info my-app › Running task escapeNonAsciiCharacters... info my-app › Running task replaceCopyright... info my-app › Running task replaceVersion... info my-app › Running task minify... info my-app › Running task generateFlexChangesBundle... info my-app › Running task generateComponentPreload... info ProjectBuilder Build succeeded in 296 ms info ProjectBuilder Executing cleanup tasks... ``` -------------------------------- ### Get Root Project Source: https://github.com/ui5/cli/blob/main/rfcs/0009-ui5-project-refactoring.md Retrieves the root project of the graph. This method returns the main project instance. ```javascript /** * Get the root project of the graph * * @public * @returns {module:@ui5/project.specification.Project} Root project */ getRoot() {} ``` -------------------------------- ### Define Development Dependency Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Configuration.md Mark a library as a development dependency, only installed when the project is the root. Development dependencies cannot be optional. ```yaml libraries: - name: sap.ushell development: true ``` -------------------------------- ### Get Specific Project Source: https://github.com/ui5/cli/blob/main/rfcs/0009-ui5-project-refactoring.md Retrieves a single project from the dependency graph by its name. Returns undefined if the project is not found. ```javascript /** * Retrieve a single project from the dependency graph * * @public * @param {string} projectName Name of the project to retrieve * @returns {module:@ui5/project.specification.project|undefined} * project instance or undefined if the project is unknown to the graph */ getProject(projectName) {} ``` -------------------------------- ### Old @ui5/project v2 Usage Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/updates/migrate-v3.md This is an example of the older @ui5/project version 2 syntax using CommonJS require statements. ```js const {normalizer} = require("@ui5/project"); const {builder} = require("@ui5/builder"); const tree = await normalizer.generateProjectTree({cwd: "."}); await builder.build({ tree, destPath: "./dist", buildDependencies: true, }); ``` -------------------------------- ### Add and Commit Configuration Files Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/GettingStarted.md Stage and commit the `package.json` and `ui5.yaml` files to your Git repository to enable UI5 CLI usage. ```sh git add package.json ui5.yaml ``` ```sh git commit -m "Enable use with UI5 CLI" ``` -------------------------------- ### Configuration: Define UI5 CLI Commands for Benchmarking Source: https://github.com/ui5/cli/blob/main/internal/benchmark/README.md Defines the specific UI5 CLI commands to benchmark, including optional preparation steps and revision limitations. ```yaml benchmarks: - command: "build" prepare: "rm -rf .ui5-cache" # Optional: command to run before each benchmark groups: build: name: "build" revisions: # Optional: limit to specific revisions - "example_feature" ``` -------------------------------- ### Clone Sample App Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Benchmarking.md Clone the UI5 sample-app repository to use as a test project for benchmarking. ```sh git clone git@github.com:UI5/sample-app.git ``` -------------------------------- ### Combine Project and Extension Configuration in ui5.yaml Source: https://github.com/ui5/cli/blob/main/rfcs/0005-server-middleware-extensibility.md Integrates custom middleware definition directly within a project's `ui5.yaml` file, alongside the project's main configuration. This allows the UI5 Server to automatically discover and apply the middleware when the server starts. ```yaml specVersion: "1.0" kind: project type: application metadata: name: my.application server: customMiddleware: - name: myCustomMiddleware beforeMiddleware: compression mountPath: /myapp configuration: debug: true --- specVersion: "1.0" kind: extension type: server-middleware metadata: name: myCustomMiddleware middleware: path: middleware/myCustomMiddleware.js ``` -------------------------------- ### Perform Change Measurement (Linux/macOS) Source: https://github.com/ui5/cli/blob/main/internal/documentation/docs/pages/Benchmarking.md Run the benchmark for the UI5 CLI 'build' command after applying your changes, using hyperfine. Results are exported to 'my_change.md'. ```sh hyperfine --warmup 1 \ 'UI5_CLI_NO_LOCAL=X node /my/home/UI5/cli/packages/cli/bin/ui5.cjs build' \ --export-markdown ./my_change.md ```