Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .github/workflows/github-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,3 @@ jobs:
run: |
npm run build:vitepress
npm run build:assets
- name: Check shrinkwrap integrity
working-directory: internal/shrinkwrap-extractor
run: npm run test
8 changes: 1 addition & 7 deletions .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:
environment: npmjs:ui5-cli-mono
strategy:
# Sequential publishing ensures dependencies exist on NPM before dependents are published
# Order: logger → fs → builder → server → project (CLI handled separately for shrinkwrap generation)
# Order: logger → fs → builder → server → project (CLI handled separately)
max-parallel: 1
matrix:
package: [logger, fs, builder, server, project]
Expand Down Expand Up @@ -131,12 +131,6 @@ jobs:
- name: Install dependencies
run: npm ci

- name: Generate npm-shrinkwrap.json
working-directory: packages/cli
run: |
set -e
node ../../internal/shrinkwrap-extractor/cli.js ../../

- name: Publish @ui5/cli package
working-directory: packages/cli
run: |
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/reuse-compliance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ jobs:
matrix:
package:
- "internal/documentation"
- "internal/shrinkwrap-extractor"
- "packages/builder"
- "packages/cli"
- "packages/fs"
Expand Down
7 changes: 4 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## Project Overview

UI5 CLI v5 — an open, modular toolchain for developing UI5 framework applications. This is a **monorepo** using npm workspaces containing 6 public packages and 4 internal packages. All code uses **ESM** (`"type": "module"`).
UI5 CLI v5 — an open, modular toolchain for developing UI5 framework applications. This is a **monorepo** using npm workspaces containing 6 public packages and 3 internal packages. All code uses **ESM** (`"type": "module"`).

**Node requirement**: `^22.20.0 || >=24.0.0`

Expand Down Expand Up @@ -62,8 +62,9 @@ npm run coverage --workspace=@ui5/server # Single package
- **Project** builds a `ProjectGraph` of dependencies from npm packages and UI5 config files (YAML/XML); validates configs with AJV JSON schemas

Internal packages:
- `internal/benchmark` — CLI performance benchmark tooling
- `internal/documentation` — VitePress docs + JSDoc + JSON schema generation
- `internal/shrinkwrap-extractor` — npm shrinkwrap utilities
- `internal/e2e-tests` — end-to-end tests for packaged CLI workflows

### Internal package dependencies

Expand Down Expand Up @@ -93,6 +94,6 @@ Conventional commits enforced via commitlint + husky. Subject must be sentence-c

**Types**: `build`, `ci`, `deps`, `docs`, `feat`, `fix`, `perf`, `refactor`, `release`, `revert`, `style`, `test`

**Scopes** are package names: `builder`, `cli`, `documentation`, `fs`, `logger`, `project`, `server`, `shrinkwrap-extractor`. Some types restrict which scopes are valid (e.g., `feat` and `fix` only allow public package scopes).
**Scopes** are package names: `builder`, `cli`, `documentation`, `fs`, `logger`, `project`, `server`. Some types restrict which scopes are valid (e.g., `feat` and `fix` only allow public package scopes).

Examples: `feat(builder): Add CSS source map support`, `fix(server): Correct middleware ordering`
1 change: 0 additions & 1 deletion commitlint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ const PUBLIC_PACKAGES = [

const INTERNAL_PACKAGES = [
"documentation",
"shrinkwrap-extractor"
];

const ALLOWED_TYPE_SCOPE_COMBINATIONS = {
Expand Down
6 changes: 3 additions & 3 deletions docs/Release-Workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ The workflow consists of three main jobs:

### 3. `publish-cli` Job
- **Trigger**: All other packages have been published
- **Purpose**: Generates `npm-shrinkwrap.json` using `shrinkwrap-extractor` and publishes the CLI package
- **Why separate**: The shrinkwrap must contain published registry versions of workspace packages, not workspace links. This requires all dependencies to be available on npm registry first.
- **How it works**: The `shrinkwrap-extractor` reads the monorepo's `package-lock.json`, extracts production dependencies for `@ui5/cli`, converts workspace references to registry URLs, and generates a valid `npm-shrinkwrap.json` that will be included in the published CLI package.
- **Purpose**: Publishes the CLI package after all of its `@ui5/*` dependencies have been published
- **Why separate**: All workspace dependencies must be available on the npm registry before the CLI is published.
- **How it works**: The release uses the repository's `package-lock.json` with `npm ci`, then publishes `@ui5/cli` as a normal package. Consumers resolve dependencies from the ranges declared in its `package.json`.

## Release Please Configuration

Expand Down
6 changes: 3 additions & 3 deletions docs/release-workflow-diagram.drawio
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,10 @@
<mxCell id="job3" value="Job 3: publish-cli" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;verticalAlign=top;fontStyle=1;fontSize=14;arcSize=10;" parent="1" vertex="1">
<mxGeometry x="340" y="760" width="360" height="130" as="geometry"/>
</mxCell>
<mxCell id="job3-step1" value="1. Generate npm-shrinkwrap.json" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;align=left;spacingLeft=10;fontSize=11;" parent="1" vertex="1">
<mxCell id="job3-step1" value="1. Install dependencies with npm ci" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;align=left;spacingLeft=10;fontSize=11;" parent="1" vertex="1">
<mxGeometry x="360" y="790" width="320" height="25" as="geometry"/>
</mxCell>
<mxCell id="job3-step2" value="2. Publish @ui5/cli with shrinkwrap" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;align=left;spacingLeft=10;fontSize=11;" parent="1" vertex="1">
<mxCell id="job3-step2" value="2. Publish @ui5/cli" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;align=left;spacingLeft=10;fontSize=11;" parent="1" vertex="1">
<mxGeometry x="360" y="820" width="320" height="25" as="geometry"/>
</mxCell>
<mxCell id="job3-complete" value="✓ All packages published to npm" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#b1ddf0;strokeColor=#10739e;fontStyle=1;fontSize=11;" parent="1" vertex="1">
Expand All @@ -79,7 +79,7 @@
<mxCell id="note-sequential" value="&lt;b&gt;Why sequential publishing?&lt;/b&gt;&lt;br&gt;• Packages have dependencies on each other&lt;br&gt;• NPM must have dependencies available&lt;br&gt;&amp;nbsp;&amp;nbsp;before publishing dependents&lt;br&gt;• `max-parallel: 1` ensures proper ordering" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff9e6;strokeColor=#d6b656;dashed=1;dashPattern=3 3;align=left;spacingLeft=10;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="740" y="580" width="280" height="100" as="geometry"/>
</mxCell>
<mxCell id="note-cli" value="&lt;b&gt;Why CLI published last?&lt;/b&gt;&lt;br&gt;• Shrinkwrap needs all dependencies (@ui5/* packages)&lt;br&gt;&amp;nbsp;&amp;nbsp;to exist on npm registry" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff9e6;strokeColor=#d6b656;dashed=1;dashPattern=3 3;align=left;spacingLeft=10;fontSize=10;" parent="1" vertex="1">
<mxCell id="note-cli" value="&lt;b&gt;Why CLI published last?&lt;/b&gt;&lt;br&gt;• All @ui5/* dependencies must exist on the npm registry before publishing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff9e6;strokeColor=#d6b656;dashed=1;dashPattern=3 3;align=left;spacingLeft=10;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="20" y="780" width="280" height="80" as="geometry"/>
</mxCell>
<mxCell id="2" value="• Synchronizes package.json intra-dependency versions for the packages" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1f5fe;strokeColor=#01579b;align=left;spacingLeft=10;fontSize=10;" parent="1" vertex="1">
Expand Down
2 changes: 1 addition & 1 deletion docs/release-workflow-diagram.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
208 changes: 0 additions & 208 deletions internal/shrinkwrap-extractor/LICENSES/Apache-2.0.txt

This file was deleted.

Loading
Loading