The introduction of Composer in Drupal 8 was a great improvement over managing packages via Drush Make, but however did leave some questions about properly load 3rd party Javascirpt libraries - here's an advice how you should do it.
Almost exactly 3 years ago, I wrote an article about 3rd party library integration in Drupal 8. But this however was about half a year before Drupal 8.0 was finally released an almost exaclty one year before Drupal 8.1 was released as first fully Composer comptiable version. So, a lot of things have changed since then. I already voted for a Composer based solution and proposed a way to do it in one of my contrib projects. But that approach is now fully obsolete at all.
One solution, I've done for a long time now, is to define a repository (within the "repositories" section of a composer.json file) pointing to the Github URL of a Javascript library and define it as type "drupal-library" and use composer/installers package to install it into web/libraries directory. This approach however never really fully satisfied me, as well as many others. There's also an open issue about that: Drupal core should help make 3rd party library management not torturous. Today, Moshe Weitzman replied with a great comment there, mentioning that the most important Drupal distros and starter kits use Asset Packagist at the moment to solve this problem - these projects are Thunder, Lightning and the Commerce 2.x project template.
Follow the Lightning link in the last paragraph to get a very good tutorial about the needed steps. In short, you need to load the oomphinc/composer-installers-extender package, add "installer-types" and "installer-path" sections to your composer.json and are now able to load any library that is registered to NPM or Bower just as you can do with any Drupal module or PHP library that is registered on Packagist.
The only problems I've encountered so far have nothing to do with Asset Packagist itself, but just to the unfortunate fact that many JS libraries in the wild do not have a consistent naming. The first two packages I've tried, both lead me to similar problems: take the rateit.js library for example. On Github, the project is named "gjunge/rateit.js", while it is registered in NPM and Bower both as "jquery.rateit". That means, when you load define the Github project as repository in your composer.json and then load it, you'll end up having a directory named "libraries/rateit.js". But if you use Asset Packagist, no matter if you chosse to load it from NPM or Bower, it will be loaded into "libraries/jquery.rateit" instead. And that's the problem.. because anywhere there's a Drupal module, defining a libraries.yml file, and there you'll need to know the path of the JS and CSS assets you want to use. Similar problem exists with PhotoSwipe libary, where it is hosted on Github with the two uppercase letters, but registered fully lowercase on NPM and Bower. There's even an Issues with Composer Install issue on the PhotoSwipe Drupal module page, where I originally strongly voted to let the module expect the files in "libraries/PhotoSwipe" directory instead of "libraries/photoswipe", in order to allow Composer installs at all. But now, having tried Asset Packagist, I totally favour using that package. Coincidentally that would mean for the PhotoSwipe module that this shouldn't be changed at all - good luck that the maintainer hasn't responded for a longer time already ;) :)
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
JavaScript ist eine Programmiersprache, mit der sich interaktive und dynamische Funktionen in Webanwendungen und Websites umsetzen lassen. Sie läuft direkt im Browser und wird mit Laufzeitumgebungen wie Node.js auch auf Servern eingesetzt. In der modernen Webentwicklung bildet JavaScript unter anderem die Grundlage für Frontend-Frameworks, Progressive Web Apps und performante Headless-Architekturen, etwa in Verbindung mit Drupal und APIs.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
PHP ist eine serverseitig ausgeführte Programmiersprache, mit der dynamische Websites, Webanwendungen und Schnittstellen entwickelt werden. Sie bildet unter anderem die technische Grundlage von Drupal und wird im Enterprise-Umfeld häufig gemeinsam mit dem Symfony Framework eingesetzt, um skalierbare, wartbare und sichere Backend-Systeme zu realisieren. Der PHP-Code wird auf dem Webserver verarbeitet und erzeugt daraus beispielsweise HTML oder strukturierte API-Antworten.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.
jQuery ist eine JavaScript-Bibliothek, die die Manipulation des Document Object Model (DOM), Ereignisverarbeitung, Animationen und asynchrone HTTP-Anfragen (Ajax) durch eine einheitliche Programmierschnittstelle vereinfacht. Sie wird in zahlreichen bestehenden Websites und Drupal-Projekten eingesetzt, während moderne Anwendungen zunehmend auf native JavaScript-APIs oder Frameworks wie Vue.js setzen. Bei Wartung und Weiterentwicklung ist daher eine sorgfältige Bewertung von Abhängigkeiten, Performance und Sicherheitsaspekten wichtig.
jQuery ist eine JavaScript-Bibliothek, die die Manipulation des Document Object Model (DOM), Ereignisverarbeitung, Animationen und asynchrone HTTP-Anfragen (Ajax) durch eine einheitliche Programmierschnittstelle vereinfacht. Sie wird in zahlreichen bestehenden Websites und Drupal-Projekten eingesetzt, während moderne Anwendungen zunehmend auf native JavaScript-APIs oder Frameworks wie Vue.js setzen. Bei Wartung und Weiterentwicklung ist daher eine sorgfältige Bewertung von Abhängigkeiten, Performance und Sicherheitsaspekten wichtig.
Cascading Style Sheets (CSS) ist eine Stylesheet-Sprache zur Gestaltung und visuellen Strukturierung von Websites. Sie definiert unter anderem Farben, Schriften, Abstände, Größen, Positionierungen und responsive Layouts und trennt damit Inhalt und Präsentation voneinander. Das Kaskadenprinzip legt fest, welche Gestaltungsregeln bei widersprüchlichen Vorgaben gelten – etwa in einer Drupal-Website oder einem modernen Web-Frontend.
Composer ist ein Abhängigkeitsmanager für PHP, der Bibliotheken und Pakete definiert, installiert und versioniert. In Drupal-Projekten verwaltet Composer unter anderem den Drupal-Kern, Module sowie Symfony-Komponenten und stellt reproduzierbare Entwicklungs- und Deployment-Umgebungen sicher. Über die Datei composer.json werden benötigte Abhängigkeiten und deren Versionsbereiche zentral festgelegt.
Drupal ist ein leistungsfähiges, freies Content-Management-System (CMS) zur Erstellung und Verwaltung komplexer Websites, Portale und Webanwendungen. Die modular aufgebaute, auf PHP und Symfony-Komponenten basierende Plattform unterstützt individuelle Inhaltsstrukturen, mehrsprachige Websites, umfangreiche Benutzerrechte und die Anbindung externer Systeme über APIs. Dadurch eignet sich Drupal besonders für skalierbare Enterprise-Projekte mit hohen Anforderungen an Sicherheit, Performance und redaktionelle Prozesse.