CDN Fetcher scans *.libraries.yml of installed modules, themes, the install profile, and core. External JS and CSS (https://, http://, protocol-relative //, or type: external with an allowed remote URL) are listed on the status report. Library definitions are rewritten to local paths only when a copy already exists: a Composer package under a Drupal libraries folder (/libraries, site libraries, or the install profile), or a mirror under libraries/cdn_fetcher/. Missing files stay on the CDN URL.

A file becomes local in one of two ways: install it with Composer under /libraries, or click Download locally on the status report. The module never downloads on install, when modules or themes are enabled, on cache rebuild, or during page builds. It never writes composer.json or runs Composer. Composer copies under /libraries are preferred and never overwritten.

drush cdn_fetcher:revalidate (drush cfr) lists missing assets and probes existing fetcher mirrors. It marks New version available when remote bytes changed; the local file is not replaced until a button click or a Composer update. Downloads that fail a declared Subresource Integrity hash are rejected.

Uninstalling a providing extension removes unused mirrors. Uninstalling CDN Fetcher deletes only libraries/cdn_fetcher/ and leaves other /libraries packages in place.

Supporting organizations: 

Project information

Releases