SAP/ui5-tooling

ui5 builder resources excludes is not working

mauriciolauffer opened this issue · 5 comments

Expected Behavior

Build and excludes resources defined in ui5.yaml.

builder:
  resources:
    excludes:
      - "/test-resources/**"

Current Behavior

ui5 build (v3) ignores builder/resources/excludes defined in ui5.yaml.
I've tried all sorts of combinations: "test-resources/", "/test-resources/", "test-resources/", etc, none worked.

Steps to Reproduce the Issue

  1. Checkout https://github.com/mauriciolauffer/openui5-tour
  2. Run ui5 build

Context

  • UI5 Module Version (output of ui5 --version when using the CLI): 3.1.2
  • Node.js Version: 18.14.2
  • npm Version: 9.5.0
  • OS/Platform: Win

Log Output / Stack Trace

verb ProjectBuilder Processing project openui5-tour...
info Project 5 of 5: ❯ Building library project openui5-tour...
info openui5-tour Task 1 of 8 › Running task escapeNonAsciiCharacters...
perf Build Task escapeNonAsciiCharacters finished in 10 ms
verb openui5-tour Task 1 of 8 ✔ Finished task escapeNonAsciiCharacters
info openui5-tour Task 2 of 8 › Running task replaceCopyright...
perf Build Task replaceCopyright finished in 20 ms
verb openui5-tour Task 2 of 8 ✔ Finished task replaceCopyright
info openui5-tour Task 3 of 8 › Running task replaceVersion...
perf Build Task replaceVersion finished in 13 ms
verb openui5-tour Task 3 of 8 ✔ Finished task replaceVersion
info openui5-tour Task 4 of 8 › Running task replaceBuildtime...
perf Build Task replaceBuildtime finished in 7 ms
verb openui5-tour Task 4 of 8 ✔ Finished task replaceBuildtime
info openui5-tour Task 5 of 8 › Running task minify...
perf Build Task minify finished in 27 ms
verb openui5-tour Task 5 of 8 ✔ Finished task minify
info openui5-tour Task 6 of 8 › Running task generateLibraryManifest...
verb builder:processors:manifestCreator Library manifest already exists at '/resources/openui5/tour/manifest.json', skipping generation
perf Build Task generateLibraryManifest finished in 23 ms
verb openui5-tour Task 6 of 8 ✔ Finished task generateLibraryManifest
info openui5-tour Task 7 of 8 › Running task generateLibraryPreload...
verb builder:processors:bundlers:moduleBundler Generating bundle:
verb builder:processors:bundlers:moduleBundler bundleDefinition: {
  "name": "openui5/tour/library-preload.js",
  "sections": [
    {
      "mode": "preload",
      "filters": [
        "openui5/tour/",
        "openui5/tour/**/manifest.json",
        "!openui5/tour/**/*-preload.js",
        "!openui5/tour/designtime/",
        "!openui5/tour/**/*.designtime.js",
        "!openui5/tour/**/*.support.js"
      ],
      "resolve": false,
      "resolveConditional": false,
      "renderer": true
    }
  ]
}
verb builder:processors:bundlers:moduleBundler bundleOptions: {
  "optimize": true,
  "sourceMap": true,
  "decorateBootstrapModule": false,
  "addTryCatchRestartWrapper": false,
  "usePredefineCalls": true,
  "numberOfParts": 1,
  "ignoreMissingModules": true
}
verb builder:processors:bundlers:moduleBundler Generating bundle:
verb builder:processors:bundlers:moduleBundler bundleDefinition: {
  "name": "openui5/tour/designtime/library-preload.designtime.js",
  "sections": [
    {
      "mode": "preload",
      "filters": [
        "openui5/tour/**/*.designtime.js",
        "openui5/tour/designtime/",
        "!openui5/tour/**/*-preload.designtime.js",
        "!openui5/tour/designtime/**/*.properties",
        "!openui5/tour/designtime/**/*.svg",
        "!openui5/tour/designtime/**/*.xml"
      ],
      "resolve": false,
      "resolveConditional": false,
      "renderer": false
    }
  ]
}
verb builder:processors:bundlers:moduleBundler bundleOptions: {
  "optimize": true,
  "sourceMap": true,
  "decorateBootstrapModule": false,
  "addTryCatchRestartWrapper": false,
  "usePredefineCalls": true,
  "numberOfParts": 1,
  "ignoreMissingModules": true,
  "skipIfEmpty": true
}
verb builder:processors:bundlers:moduleBundler Generating bundle:
verb builder:processors:bundlers:moduleBundler bundleDefinition: {
  "name": "openui5/tour/library-preload.support.js",
  "sections": [
    {
      "mode": "preload",
      "filters": [
        "openui5/tour/**/*.support.js",
        "!openui5/tour/**/*-preload.support.js"
      ],
      "resolve": false,
      "resolveConditional": false,
      "renderer": false
    }
  ]
}
verb builder:processors:bundlers:moduleBundler bundleOptions: {
  "optimize": false,
  "sourceMap": true,
  "decorateBootstrapModule": false,
  "addTryCatchRestartWrapper": false,
  "usePredefineCalls": true,
  "numberOfParts": 1,
  "ignoreMissingModules": true,
  "skipIfEmpty": true
}
verb lbt:bundle:Resolver   Resolving bundle definition openui5/tour/library-preload.js
verb lbt:bundle:Resolver   Resolving bundle definition openui5/tour/designtime/library-preload.designtime.js
verb lbt:bundle:Resolver   Resolving bundle definition openui5/tour/library-preload.support.js
verb lbt:bundle:Resolver     Resolving section of type preload
verb lbt:resources:ResourceFilterList Filetypes: .js,.control.xml,.fragment.html,.fragment.json,.fragment.xml,.view.html,.view.json,.view.xml
verb lbt:resources:ResourceFilterList   openui5/tour/ --> include: /^openui5\/tour\/(?:[^/]+\/)*[^/]*(?:\.js|\.control\.xml|\.fragment\.html|\.fragment\.json|\.fragment\.xml|\.view\.html|\.view\.json|\.view\.xml)$/
verb lbt:resources:ResourceFilterList   openui5/tour/**/manifest.json --> include: /^openui5\/tour\/(?:[^/]+\/)*manifest\.json$/
verb lbt:resources:ResourceFilterList   !openui5/tour/**/*-preload.js --> exclude: /^openui5\/tour\/(?:[^/]+\/)*[^/]*-preload\.js$/
verb lbt:resources:ResourceFilterList   !openui5/tour/designtime/ --> exclude: /^openui5\/tour\/designtime\/(?:[^/]+\/)*[^/]*(?:\.js|\.control\.xml|\.fragment\.html|\.fragment\.json|\.fragment\.xml|\.view\.html|\.view\.json|\.view\.xml)$/
verb lbt:resources:ResourceFilterList   !openui5/tour/**/*.designtime.js --> exclude: /^openui5\/tour\/(?:[^/]+\/)*[^/]*\.designtime\.js$/
verb lbt:resources:ResourceFilterList   !openui5/tour/**/*.support.js --> exclude: /^openui5\/tour\/(?:[^/]+\/)*[^/]*\.support\.js$/
verb lbt:bundle:Resolver     Resolving section of type preload
verb lbt:resources:ResourceFilterList Filetypes: .js,.control.xml,.fragment.html,.fragment.json,.fragment.xml,.view.html,.view.json,.view.xml
verb lbt:resources:ResourceFilterList   openui5/tour/**/*.designtime.js --> include: /^openui5\/tour\/(?:[^/]+\/)*[^/]*\.designtime\.js$/
verb lbt:resources:ResourceFilterList   openui5/tour/designtime/ --> include: /^openui5\/tour\/designtime\/(?:[^/]+\/)*[^/]*(?:\.js|\.control\.xml|\.fragment\.html|\.fragment\.json|\.fragment\.xml|\.view\.html|\.view\.json|\.view\.xml)$/
verb lbt:resources:ResourceFilterList   !openui5/tour/**/*-preload.designtime.js --> exclude: /^openui5\/tour\/(?:[^/]+\/)*[^/]*-preload\.designtime\.js$/
verb lbt:resources:ResourceFilterList   !openui5/tour/designtime/**/*.properties --> exclude: /^openui5\/tour\/designtime\/(?:[^/]+\/)*[^/]*\.properties$/
verb lbt:resources:ResourceFilterList   !openui5/tour/designtime/**/*.svg --> exclude: /^openui5\/tour\/designtime\/(?:[^/]+\/)*[^/]*\.svg$/
verb lbt:resources:ResourceFilterList   !openui5/tour/designtime/**/*.xml --> exclude: /^openui5\/tour\/designtime\/(?:[^/]+\/)*[^/]*\.xml$/
verb lbt:bundle:Resolver     Resolving section of type preload
verb lbt:resources:ResourceFilterList Filetypes: .js,.control.xml,.fragment.html,.fragment.json,.fragment.xml,.view.html,.view.json,.view.xml
verb lbt:resources:ResourceFilterList   openui5/tour/**/*.support.js --> include: /^openui5\/tour\/(?:[^/]+\/)*[^/]*\.support\.js$/
verb lbt:resources:ResourceFilterList   !openui5/tour/**/*-preload.support.js --> exclude: /^openui5\/tour\/(?:[^/]+\/)*[^/]*-preload\.support\.js$/
verb lbt:bundle:Resolver   Resolving bundle done
verb lbt:bundle:Resolver   Resolving bundle done
verb lbt:bundle:Builder   Skipping empty bundle openui5/tour/designtime/library-preload.designtime.js
verb lbt:bundle:Builder   Skipping empty bundle openui5/tour/library-preload.support.js
verb lbt:bundle:Resolver   Resolving bundle done
verb lbt:bundle:Builder   Create 'openui5/tour/library-preload.js'
verb lbt:bundle:Builder     Adding section of type preload
verb lbt:bundle:Builder     openui5/tour/Tour.js (1883,1864)
verb lbt:bundle:Builder     openui5/tour/TourStep.js (3261,3238)
verb lbt:bundle:Builder     openui5/tour/library.js (475,453)
verb lbt:bundle:Builder     openui5/tour/manifest.json (613,407)
perf Build Task generateLibraryPreload finished in 43 ms
verb openui5-tour Task 7 of 8 ✔ Finished task generateLibraryPreload
info openui5-tour Task 8 of 8 › Running task buildThemes...
perf Build Task buildThemes finished in 5 ms
verb openui5-tour Task 8 of 8 ✔ Finished task buildThemes
verb Project 5 of 5: ✔ Finished building library project openui5-tour
verb ProjectBuilder Writing out files...
info ProjectBuilder Build succeeded in 54 s
info ProjectBuilder Executing cleanup tasks...
verb builder:processors:minifier Terminating workerpool

Hi @mauriciolauffer,

The excludes Globs for resources are usually prefixed with the virtaul path. Therefore, by defining it this way it becomes "/test-resources/test-resources/**".

You might use backtrackig, so the pattern would become like this:

builder:
  resources:
    excludes:
      - "../test-resources/**"

Cheers

Thanks @d3xter666 .

This is a breaking change not documented anywhere. That wasn't the behaviour before v3.

Documentation should be updated to reflect the change as it still shows the "old" way: https://sap.github.io/ui5-tooling/v3/pages/Configuration/#exclude-resources

Screenshot_20230512_211428_Chrome

The v3 migration guide doesn't mention it as well: https://sap.github.io/ui5-tooling/v3/updates/migrate-v3/

@mauriciolauffer Thanks for bringing this up! I think you found a quite serious bug here, which was introduced in UI5 Tooling v3.

Indeed, the patterns shown in the documentation should still work. But as Yavor pointed out, they are actually incorrectly prefixed with the respective base paths. I'll prepare a fix for this in order to restore the old behavior 👍

Released as UI5 CLI v3.1.3

Just tested it, errors are gone. Thanks guys \o/