How to install jQuery with Composer? How to install jQuery with Composer? symfony symfony

How to install jQuery with Composer?


Actually there is an easier way to install jQuery, just type:

{    "require": {        "components/jquery": "1.9.*"    }}

It uses Component Installer for Composer and by default all assets from Component are installed under components, but it can be customize. (see docs).


This is simply a missing feature. There should probably be a new type of dist which is just a single plaintext file to be downloaded and left as-is. Please file a feature request on the github issue tracker: https://github.com/composer/composer/issues/

EDIT :

The feature actually exists but wasn't documented.

"type": "file"


As outlined already, part one of the solution is defining you own repositories and the "type: ": "file" repository definition option. But a subsequent issue is getting composer to put the JQuery where you want it. As it stands, composer seems to be limited to downloading dependency source under vendor-dir (which is annoying but probably related to autoloading requirements). The general fix to this limitation is to write a composer plugin that overcomes it. Seems to be a few plugins that can manage this. The simplest most lightweight solution I've found is PHP Composer Asset Manager, which is dedicated to managing non PHP/Composer "assets". Though, it has at least one limitation in that changes that the plugin makes are not managed/detected by composer. Still usable.

Here's a full composer.json to install JQuery using that plugin:

{  "name": "foo/bar",  "require":  {    "phpclasses/assets": "*",     "jquery/jquery": "*"  },  "repositories": [    {     "type": "composer",     "url": "http://www.phpclasses.org/"    },    {      "type": "package",      "package": {        "name": "jquery/jquery",        "version": "1.7.2",        "type": "jquery",        "dist": {          "url": "http://code.jquery.com/jquery-1.7.2.js",          "type": "file"        }      }    }  ],  "extra": {    "assets": {      "actions": [        {          "type": "copy",          "target": "webroot/js",          "pattern": "\\.js$"        }      ],      "packages": {        "jquery/jquery": "*"      }    }  }}