@cbs-consulting/tools
v1.3.0
Published
Configuration files ESLint, UI5 Linter and Prettier
Downloads
4,139
Keywords
Readme
@cbs-consulting/tools
@cbs-consulting/tools is a configuration package that provides shared ESLint configurations for developing SAPUI5 and/or SAP Cloud Application Programming Model (SAP CAP) applications. Furthermore, it includes a Prettier configuration to ensure consistent code formatting across projects.
ESLint
Version requirements
- Node.js
^20.19.0 || ^22.13.0 || >=24.0.0is required. eslint>=10is required.prettier>=3is required for Prettier configuration usage.@sap/cds>=9is optional and only required when using CAP rule sets.@sap/eslint-plugin-cds>=4is optional and only required when using CAP rule sets.
Installation
There are separate rule sets per framework and language. All these rule sets are based on a common rule set.
SAPUI5 (JavaScript)
For SAPUI5 projects using JavaScript, install the following dev dependencies:
npm install --save-dev @cbs-consulting/tools eslintSAPUI5 (TypeScript)
For SAPUI5 projects using TypeScript, install the following dev dependencies:
npm install --save-dev @cbs-consulting/tools eslintSAP CAP (JavaScript)
For SAP CAP projects using JavaScript, install the following dev dependencies:
npm install --save-dev @cbs-consulting/tools eslint @sap/cds @sap/eslint-plugin-cdsSAP CAP (TypeScript)
For SAP CAP projects using TypeScript, install the following dev dependencies:
npm install --save-dev @cbs-consulting/tools eslint @sap/cds @sap/eslint-plugin-cds
typescript-eslintis bundled with@cbs-consulting/tools, so you do not need to install it yourself. Installing your own copy can causeeslintpeer-dependency conflicts (an oldertypescript-eslintmay not support ESLint 10).
Usage
To use the ESLint configurations, create or extend the relevant configuration in the eslint.config.mjs file.
SAPUI5
JavaScript
import ui5JsConfig from "@cbs-consulting/tools/eslint/ui5/js/eslint.config.mjs";
export default ui5JsConfig;TypeScript
import ui5TsConfig from "@cbs-consulting/tools/eslint/ui5/ts/eslint.config.mjs";
export default ui5TsConfig;SAP CAP
JavaScript
import capJsConfig from "@cbs-consulting/tools/eslint/cap/js/eslint.config.mjs";
export default capJsConfig;TypeScript
import capTsConfig from "@cbs-consulting/tools/eslint/cap/ts/eslint.config.mjs";
export default capTsConfig;Prettier
Installation
Install the necessary packages via npm:
npm install --save-dev @cbs-consulting/tools prettier prettier-plugin-organize-imports @prettier/plugin-xmlTo use the Prettier configuration, extend it in your prettier.config.mjs file:
import prettierConfig from "@cbs-consulting/tools/prettier/prettier.config.mjs";
export default prettierConfig;UI5 Linter
npm install --save-dev @cbs-consulting/tools @ui5/linterTo use the UI5 Linter configuration, create a configuration file ui5lint.config.mjs.
import ui5LinterConfig from "@cbs-consulting/tools/ui5-linter/ui5lint.config.mjs";
export default ui5LinterConfig;Monorepos
UI5 Linter resolves its configuration from the folder in which it runs, so in a
monorepo each UI5 app runs the linter from its own directory. Keep a single
ui5lint.config.mjs at the workspace root and point each app to it via
--config:
// app/<my-app>/package.json
{
"scripts": {
"ui5lint": "ui5lint --config ../../ui5lint.config.mjs",
"ui5lint-fix": "ui5lint --fix --config ../../ui5lint.config.mjs"
}
}Add aggregate scripts at the workspace root to run every app:
// package.json (root)
{
"scripts": {
"ui5lint": "npm run ui5lint --workspaces --if-present",
"ui5lint-fix": "npm run ui5lint-fix --workspaces --if-present"
}
}In sandboxed or CI environments the linter may print an
@ui5/linter update check failedbox referencing~/.config. This is a harmless update-check warning and does not affect the linting result.
Migrating
From cbs-tools to @cbs-consulting/tools
The package was renamed from cbs-tools to @cbs-consulting/tools. Replace the
dependency and update every import specifier accordingly
(cbs-tools/... → @cbs-consulting/tools/...).
Upgrading to ESLint 10
@cbs-consulting/[email protected] requires ESLint 10 (eslint@^10). When
upgrading:
- Bump
eslintto^10. - Bump
@sap/eslint-plugin-cdsto>=4.2(4.1 only supports ESLint 9). - Remove any project-level
@typescript-eslint/*ortypescript-eslintpins — a compatibletypescript-eslintis bundled with this package. Older pins (e.g.8.53.0) do not support ESLint 10 and will breaknpm install.
License
This package is licensed under the MIT License.
