UI5リンター(コード品質チェックツール)が報告するmanifest.jsonの問題を、自動修正できない場合に手動で修正します。次のようなリンターのルール出力時に使用してください: - `no-outdated-manifest-version` - _versionが2.x以外の場合 - `no-legacy-ui5-version-in-manifest` - minUI5Versionが1.136より低い場合 - `no-deprecated-library` - 依存関係に廃止予定のライブラリが含まれている場合 - `no-deprecated-component` - 依存関係に廃止予定のコンポーネントが含まれている場合 - `no-deprecated-api` - 廃止予定のビュータイプ、リソース/JavaScript、廃止予定のモデルタイプが含まれている場合 - `no-removed-manifest-property` - manifest v2にasyncフラグが含まれている場合 manifest.jsonファイルにバージョン、ライブラリ、コンポーネント、ビュータイプに関するエラーがあるときに起動します。 manifest.jsonを自動的に最新のUI5互換版に更新します。
Fix manifest.json issues that UI5 linter reports but cannot auto-fix. Use this skill when linter outputs these rules: - `no-outdated-manifest-version` - For _version not being 2.x - `no-legacy-ui5-version-in-manifest` - For minUI5Version below 1.136 - `no-deprecated-library` - For deprecated libraries in dependencies - `no-deprecated-component` - For deprecated components in dependencies - `no-deprecated-api` - For deprecated view types, resources/js, deprecated model types - `no-removed-manifest-property` - For async flags in manifest v2 Trigger on manifest.json files with errors about version, libraries, components, view types. Automatically updates manifest.json to be modern UI5 compatible.
This skill fixes manifest.json issues that the UI5 linter detects but cannot auto-fix because they may require understanding of the application's dependencies and structure.
| Rule ID | Message Pattern | This Skill's Action |
|---|---|---|
no-outdated-manifest-version |
manifest.json must be modernized to Version 2 | Update _version to "2.0.0" |
no-legacy-ui5-version-in-manifest |
Use UI5 version 1.136.0 or higher | Update minUI5Version to "1.136.0" |
no-deprecated-library |
Use of deprecated library '...' | Remove from dependencies/libs |
no-deprecated-component |
Use of deprecated component '...' | Remove from dependencies/components |
no-deprecated-api |
Use of deprecated view type '...' | Change to "XML" |
no-deprecated-api |
Use of deprecated property 'sap.ui5/resources/js' | Remove if empty |
no-deprecated-api |
Use of deprecated class '...' (model types) | Flag for manual modernization |
no-removed-manifest-property |
Property '...' has been removed in Manifest Version 2 | Remove the property |
Apply this skill when you see linter output like:
manifest.json:2:3 error manifest.json must be modernized to Version 2 no-outdated-manifest-version
manifest.json:15:5 error Use UI5 version 1.136.0 or higher in manifest.json no-legacy-ui5-version-in-manifest
manifest.json:20:7 error Use of deprecated library 'sap.ui.commons' no-deprecated-library
manifest.json:25:7 error Use of deprecated view type 'JSON' no-deprecated-api
manifest.json:30:9 error Property '/sap.ui5/rootView/async' has been removed in Manifest Version 2 no-removed-manifest-property
no-outdated-manifest-version - Update _version to 2.0.0IMPORTANT: Only update the root _version to "2.0.0". Do NOT change nested _version properties inside sap.app, sap.ui, sap.ui5, etc. — those should remain at their current values (e.g., "1.1.0", "1.2.0").
// Before
{
"_version": "1.12.0",
"sap.app": {
"_version": "1.1.0",
...
},
"sap.ui5": {
"_version": "1.2.0",
...
}
}
// After — only root _version changed
{
"_version": "2.0.0",
"sap.app": {
"_version": "1.1.0",
...
},
"sap.ui5": {
"_version": "1.2.0",
...
}
}
After updating to version 2.0.0, you MUST also apply these consequential changes:
type: "View" to routing config or targets (see section 8)no-legacy-ui5-version-in-manifest - Update minUI5Version// Before
"dependencies": {
"minUI5Version": "1.120.0",
...
}
// After
"dependencies": {
"minUI5Version": "1.136.0",
...
}
If minUI5Version is an array, update all entries below 1.136.0.
no-deprecated-library - Remove Deprecated LibrariesRemove these deprecated libraries from sap.ui5/dependencies/libs:
sap.ui.commons - Use sap.m insteadsap.ui.ux3 - Use sap.m and sap.f insteadsap.makit - Use sap.viz insteadsap.me - Use sap.m insteadsap.ca.ui - Use standard controlssap.landvisz - Deprecatedsap.ui.vtm - Deprecatedsap.sac.grid - Deprecated since 1.112, removed 1.114sap.ui.suite - Deprecated since 1.108sap.zen.commons - Deprecated since 1.89sap.zen.crosstab - Deprecated since 1.89sap.zen.dsh - Deprecated since 1.89// Before
"libs": {
"sap.m": {},
"sap.ui.commons": {},
"sap.ui.layout": {}
}
// After
"libs": {
"sap.m": {},
"sap.ui.layout": {}
}
no-deprecated-component - Remove Deprecated ComponentsRemove deprecated components from sap.ui5/dependencies/components.
no-deprecated-api - Fix View TypesChange deprecated view types to "XML" (or "Typed" for JS-heavy view cases):
JSON → XMLHTML → XMLJS → XML (or consider Typed view as an alternative for complex JS logic)Template → XMLApplies to:
sap.ui5/rootView/typesap.ui5/routing/config/viewTypesap.ui5/routing/targets/*/viewType// Before
"rootView": {
"viewName": "my.app.view.Main",
"type": "JSON"
}
// After
"rootView": {
"viewName": "my.app.view.Main",
"type": "XML"
}
Important: When changing view types, the actual view file must also be converted to XML format. Flag this for manual review.
no-removed-manifest-property - Remove Async Properties (Manifest v2)In manifest version 2.0.0+, the async flag is implicitly true for the root view and the routing configuration, so it must be removed from exactly these two locations:
sap.ui5/rootView/asyncsap.ui5/routing/config/async// Before (v2)
"rootView": {
"viewName": "my.app.view.Main",
"type": "XML",
"async": true
}
// After (v2)
"rootView": {
"viewName": "my.app.view.Main",
"type": "XML"
}
SCOPE WARNING — do NOT remove async from anywhere else. The implicit-async behavior applies only to rootView and routing.config. Other locations where async may legitimately appear (and must be preserved) include:
sap.ui5/models/*/settings/async (e.g., OData/JSON model async loading flag)sap.app/dataSources/* settings that include asyncsap.ui5/extends, sap.ui5/componentUsages, or third-party namespacesasync inside route definitions that is not the top-level routing.config.asyncThe linter rule no-removed-manifest-property only fires for the two paths above. Trust the linter's pointer — only remove the exact properties it flags.
no-deprecated-api - Remove sap.ui5/resources/jsIf the array is empty, remove the entire js property (and resources if it becomes empty).
// Before
"resources": {
"js": []
}
// After
// (resources section removed if empty)
If not empty, this requires manual modernization to proper module dependencies.
When _version is updated to "2.0.0", the routing configuration properties must also be renamed. The view-prefixed property names are deprecated in version 2.
Property renaming rules:
| Old Property (v1.x) | New Property (v2.0.0) | Where |
|---|---|---|
viewPath |
path |
routing.config |
viewName |
name |
routing.config and routing.targets.* |
viewId |
id |
routing.targets.* |
viewLevel |
level |
routing.targets.* |
viewType |
viewType |
Unchanged — keep as-is |
New required property:
| Property | Value | Where |
|---|---|---|
type |
"View" |
routing.config (applies to all targets) OR each individual routing.targets.* entry |
Before (v1.x):
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"viewPath": "my.app.view",
"controlId": "app",
"controlAggregation": "pages",
"async": true
},
"routes": [
{
"name": "main",
"pattern": "",
"target": "main"
}
],
"targets": {
"main": {
"viewName": "Main",
"viewId": "main",
"viewLevel": 1
},
"detail": {
"viewName": "Detail",
"viewId": "detail",
"viewLevel": 2
}
}
}
After (v2.0.0):
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"path": "my.app.view",
"controlId": "app",
"controlAggregation": "pages",
"type": "View"
},
"routes": [
{
"name": "main",
"pattern": "",
"target": "main"
}
],
"targets": {
"main": {
"name": "Main",
"id": "main",
"level": 1
},
"detail": {
"name": "Detail",
"id": "detail",
"level": 2
}
}
}
Changes summary:
viewPath → path in configviewName → name in each targetviewId → id in each targetviewLevel → level in each targetviewType stays as viewType (unchanged)async removed only from routing.config (implicit true in v2). Do NOT touch async on models, dataSources, or other unrelated config — see Section 6 scope warning.type: "View" added to config (alternatively, add "type": "View" to each individual target if mixing views and components)When to add type to config vs per target:
type in config (most common): All targets are viewstype per target: Mixed routing targets (some views, some components)no-outdated-manifest-version: Update root _version to "2.0.0" (keep nested _version values unchanged)no-legacy-ui5-version-in-manifest: Update minUI5Version to "1.136.0"no-deprecated-library: Remove the library from dependenciesno-deprecated-component: Remove the component from dependenciesno-deprecated-api (view type): Change to "XML"no-deprecated-api (resources/js): Remove if emptyno-removed-manifest-property: Remove the property_version was updated to 2.0.0, also apply routing modernization:
viewPath → path, viewName → name, viewId → id, viewLevel → level in routing config and targetstype: "View" to routing.config (or per target)async only from sap.ui5/rootView and sap.ui5/routing/config. Do NOT remove async from model settings, dataSources, or any other path — those keep their async flag.Given linter output:
manifest.json:2:3 error manifest.json must be modernized to Version 2 no-outdated-manifest-version
manifest.json:15:5 error Use UI5 version 1.136.0 or higher in manifest.json no-legacy-ui5-version-in-manifest
manifest.json:20:7 error Use of deprecated library 'sap.ui.commons' no-deprecated-library
manifest.json:35:9 error Property '/sap.ui5/rootView/async' has been removed in Manifest Version 2 no-removed-manifest-property
manifest.json:40:9 error Property '/sap.ui5/routing/config/async' has been removed in Manifest Version 2 no-removed-manifest-property
Transform:
// Before
{
"_version": "1.12.0",
"sap.app": {
"_version": "1.1.0",
...
},
"sap.ui5": {
"_version": "1.2.0",
"dependencies": {
"minUI5Version": "1.84.0",
"libs": {
"sap.m": {},
"sap.ui.commons": {},
"sap.ui.layout": {}
}
},
"rootView": {
"viewName": "my.app.view.Main",
"type": "XML",
"async": true
},
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"viewPath": "my.app.view",
"controlId": "app",
"controlAggregation": "pages",
"async": true
},
"routes": [
{ "name": "main", "pattern": "", "target": "main" }
],
"targets": {
"main": {
"viewName": "Main",
"viewId": "main",
"viewLevel": 1
}
}
}
}
}
// After
{
"_version": "2.0.0",
"sap.app": {
"_version": "1.1.0",
...
},
"sap.ui5": {
"_version": "1.2.0",
"dependencies": {
"minUI5Version": "1.136.0",
"libs": {
"sap.m": {},
"sap.ui.layout": {}
}
},
"rootView": {
"viewName": "my.app.view.Main",
"type": "XML"
},
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"path": "my.app.view",
"controlId": "app",
"controlAggregation": "pages",
"type": "View"
},
"routes": [
{ "name": "main", "pattern": "", "target": "main" }
],
"targets": {
"main": {
"name": "Main",
"id": "main",
"level": 1
}
}
}
}
}
_version to 2.0.0 — do NOT change nested _version properties inside sap.app, sap.ui, sap.ui5, etc._version to 2.0.0, always apply routing property renames and add type: "View" in the same passminUI5Version update means the app won't run on older UI5 versions - this is intentional for modern UI5 compatibility_version to 2.0.0, synchronizationMode and other v1-specific properties should also be removed if presentsap.ui/supportedThemes causes an error in manifest v2 — remove it if presentIAsyncContentCreation is NOT enforced by manifest v2 — it must be explicitly added in Component.js by the fix-component-async skill (this skill does not handle it)JS, JSON, HTML) the default replacement is XML, but for complex JS-heavy views, consider Typed views as an alternativeIAsyncContentCreation interface — defer to that skill for correct placementdata-sap-ui-libs), use fix-bootstrap-params instead of this skill原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。