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": "*" } } }}