diff --git a/guides/deploy/build.md b/guides/deploy/build.md index 759b5834bb..f8055bbd3e 100644 --- a/guides/deploy/build.md +++ b/guides/deploy/build.md @@ -11,30 +11,21 @@ status: released ## Automatic Build Tasks -`cds build` runs _build tasks_ on your project folders to prepare them for deployment. Build tasks compile _source files_ (typically CDS sources) and create required artifacts, for example, EDMX files or SAP HANA design-time artifacts. +`cds build` runs _build tasks_ on your project to prepare it for deployment. -The following build tasks represent the default configuration dynamically determined by `cds build` for a minimal Node.js project when executing `cds build --production` or `cds build --profile production` : +Build tasks compile _source files_ (typically CDS sources) and create required artifacts, for example, EDMX files or SAP HANA design-time artifacts. -::: code-group -```json [package.json] -{ "cds": { - "build": { - "target": "gen", - "tasks": [ - { "for": "hana", "src": "db", "options": {"model": ["db","srv"] } }, - { "for": "nodejs", "src": "srv", "options": {"model": ["db","srv"] } } - ] - } -}} +For a full production build, this command should be enough for most projects: +```sh +cds build --production ``` -::: Build tasks are derived from the CDS configuration and project context. By default, CDS models are resolved from these sources: - _db/_, _srv/_, _app/_ — default root folders of a CAP project - _fts/_ and its subfolders when using [feature toggles](../extensibility/feature-toggles#enable-feature-toggles) -- CDS model folders and files defined by [required services](../../node.js/cds-env#services), including built-in ones - - Examples: [persistent queue](../../node.js/queue#persistent-queue) or [MTX-related services](../multitenancy/mtxs#mtx-services-reference) +- CDS model folders and files defined by [required services](../../node.js/cds-env#services) + - Built-in examples: [persistent queue](../../node.js/queue#persistent-queue) or [MTX-related services](../multitenancy/mtxs#mtx-services-reference) - Explicit `src` folder configured in the build task @@ -42,15 +33,25 @@ Feature toggle folders and required built-in service models will also be added i [Learn more about `cds.resolve`](../../node.js/cds-compile#cds-resolve){.learn-more} -::: tip The executed build tasks are logged to the command line -You can use them as a blue print – copy & paste them into your CDS configuration and adapt them to your needs. -::: +## Extending `cds build` +Provide additional service integrations by writing a `cds build` plugin: +```js +// cds-plugin.js +const cds = require('@sap/cds') +cds.build?.register?.('my-plugin', + class extends cds.build.Plugin { + async build() { /* ... */ } + } +) +``` +[Learn more about `cds build` plugins](../../tools/apis/cds-build){.learn-more}{style="margin-top: 0px"} ## Custom Build Tasks -If custom build tasks are configured, those properties have precedence +If custom build tasks are configured, those properties have precedence. + For example, you want to configure the _src_ folder and add the default models. To achieve this, do not define the _model_ option in your build task: ::: code-group @@ -68,7 +69,7 @@ For example, you want to configure the _src_ folder and add the default models. This way, the model paths will still be dynamically determined, but the _src_ folder is taken from the build task configuration. You still benefit from the automatic determination of models – for example when adding a new external services or when CAP is changing any built-in service defaults. -To control which tasks `cds build` executes, you can add them as part of your [project configuration](../../node.js/cds-env#project-settings) in _package.json_ or _.cdsrc.json_, as outlined [in the following chapter](#build-task-properties). +To control which tasks `cds build` executes, you can add them as part of your [project configuration](../../node.js/cds-env#project-settings) in _package.json_ or _.cdsrc.json_, as outlined in the following chapter. ## Build Task Types @@ -111,7 +112,7 @@ Alternatively you can execute build tasks and pass the described arguments to th ## Build Target Folder {#build-target-folder} -If you want to change the default target folder, use the cds.build.target=path/to/my/folder property. It is resolved based on the root folder of your project. +To change the default target folder, use the cds.build.target=path/to/my/folder. It is resolved based on the root folder of your project. #### Node.js