balbuf / drupal-libraries-installer

Install Drupal libraries via a simple listing in your composer.json file
13 stars 6 forks source link

Drupal Libraries Installer

Drupal Libraries Installer is a composer plugin that allows for easily managing external libraries required for Drupal modules/themes that are not available as composer packages. This plugin is another piece of the puzzle towards managing all external dependencies for a Drupal site in a single place: the composer.json file.

How to Use

  1. Add Drupal Libraries Installer to your Drupal site project:

    composer require balbuf/drupal-libraries-installer
  2. Add libraries to your composer.json file via the drupal-libraries property within extra. A library is specified using its name as the key and a URL to its distribution ZIP file as the value:

    {
        "extra": {
            "drupal-libraries": {
                "flexslider": "https://github.com/woocommerce/FlexSlider/archive/2.6.4.zip",
                "chosen": "https://github.com/harvesthq/chosen/releases/download/v1.8.2/chosen_v1.8.2.zip"
            }
        }
    }

    See below for how to find the ZIP URL for a GitHub repo.

  3. Ensure composer packages of type drupal-library are configured to install to the appropriate path. By default, composer/installers (a dependency of this plugin and likely already included in your project) will install these packages to /libraries/{$name}/ in the root of your repo. You may wish to change this via the installer-paths property (within extra) of your composer.json:

    {
        "extra": {
            "installer-paths": {
                "web/libraries/{$name}/": ["type:drupal-library"]
            }
        }
    }

    See the composer/installers README for more information on the installer-paths property.

  4. Run composer install. Libraries are downloaded and unpacked into place upon running composer install or composer update. (To upgrade a library, simply swap out its URL in your composer.json file and run composer install again.)

How to Reference a GitHub Repo as a ZIP File

If you are directed to download a library from its GitHub repo, follow these instructions to find a link to the ZIP file version of the code base:

Preferred Method

It is best to reference a specific release of the library so that the same version of code is downloaded every time for each user of the project. To see what releases are available:

  1. Click the X releases link (where X is some number) near the top of the GitHub repo's home page. You can also reach the release page by appending /releases/ to the repo's home page URL, e.g. for https://github.com/harvesthq/chosen, you'd go to https://github.com/harvesthq/chosen/releases/.

  2. Identify which release you'd like to use. You'll likely want to use the latest release unless the module noted a specific version requirement.

  3. For that release, find the "Assets" section. If the repo provides its own distribution ZIP file, that will be listed as one of the first files in the list. If so, you'll want to try using that first in case it includes pre-built files not available directly in the repo. Otherwise, use the "Source code (zip)" link for that release. Simply copy the URL for the desired link to use within your composer.json file.

Alternate Method

If the library does not provide any releases, you can still reference it in ZIP file form. The downside is that any time you download this ZIP, the contents may change based on the state of the repo. There is no guarantee that separate users of the project will have the exact same version of the library.

  1. Click the green Clone or download button on the repo's home page.

  2. Copy the URL for the Download ZIP link to use within your composer.json file.

Notes