Problem/Motivation
Varbase 11 used to obtain six front-end libraries by running recipes/varbase_starter/scripts/drupal-libraries-sync.js, a Node script that copied files out of node_modules/ into web/libraries/, driven by a drupal-libraries block, six npm dependencies and a postinstall hook in package.json. That is replaced by Composer packages on Packagist, each required by the module or the varbase_* recipe that actually loads it.
vardot/aos2.3.4 (new)vardot/jquery.fancytree2.38.5 (new)vardot/ckeditor5-media-embed-drupal47.6.2 (new)vardot/ace1.44.0 (refreshed from a 2017 fork)vardot/dropzone5.9.3 (refreshed from a 2017 fork)swagger-api/swagger-ui, already required bydrupal/openapi_ui_swagger; it only needed an installer path.
All are type: drupal-library except swagger-api/swagger-ui, which is type: library.
This recipe carried the sync script itself, at scripts/drupal-libraries-sync.js (112 lines), and the Drupal CMS pre-test CI job wrote a drupal-libraries block into package.json, copied the script in and ran yarn to drive it. With the libraries coming from Composer, none of that has a reason to exist.
The same job also verified the libraries by counting declarations in package.json. A count can pass while an installer path is wrong or an upstream layout has changed, so it did not actually prove the files the .libraries.yml entries load were on disk.
Steps to reproduce
- Read
.gitlab-ci.yml, Drupal CMS pre-test job: it writes adrupal-librariesblock, copiesscripts/drupal-libraries-sync.jsin, runs yarn, then counts declarations inpackage.json. - Point an installer path at a wrong directory and re-run the job: the count still passes while no library file is on disk.
Environment: Drupal core 11.4.5, Varbase 11.0.x, PHP 8.4, MariaDB, DDEV.
Proposed resolution
- Delete
scripts/drupal-libraries-sync.js. - Rewire the Drupal CMS pre-test job: no
drupal-librariesblock, no copying the sync script in, no yarn at all. - The job wires the two installer paths a generic
web/libraries/{$name}rule cannot place (swagger-api/swagger-uiistype: library;ckeditor_media_embedloads its plugin from a nested path). - The job asserts the library files the
.libraries.ymlentries load are on disk, instead of counting declarations.
Verified on a freshly installed Varbase 11.4.5 site in DDEV, with every package resolved from Packagist and no VCS repositories:
- 14/14 declared library files present on disk; 10/10 assets return HTTP 200.
- 7/7 Drupal libraries discovered, every asset resolving, all 7 rendering the Composer paths.
- Status report green:
ace_editorOK,dropzonejs_libraryOK,taxonomy_managerOK, media-embed installed at 47.6.2 matching core 47.6.2. ace_editorPHPUnit: 69 tests, 709 assertions, 0 failures.phpcsclean on every changed PHP file.yarn installsucceeds with none of the six npm library packages present.
Remaining tasks
- ✅ File an issue
- ✅ Addition/Change/Update/Fix
- ✅ Testing to ensure no regression
- ➖ Automated unit/functional testing coverage
- ➖ Developer Documentation support
- ➖ User Guide Documentation support
- ➖ UX/UI designer responsibilities
- ➖ Accessibility and Readability
- ❌ Reviewed by a human
- ❌ Code review by maintainers
- ❌ Full testing and approval
- ❌ Credit contributors
- ❌ Review with the product owner
- ❌ Update Release Notes
- ❌ Release
User interface changes
- N/A
API changes
- N/A
Data model changes
- N/A
Release notes snippet
- The
drupal-libraries-syncscript is removed; the front-end libraries come from Composer. CI now asserts the library files on disk.
Issue fork varbase_starter-3620357
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
rajab natshah