I have been able to install repositories that do not have a composer.json file like this:
{
\"type\": \"package\",
\"package\": {
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": "*"
}
}
}
}
Use npm, yarn or WebPack instead of Composer they are way better for that kind of needs.
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"
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).
you can install jquery by using npm like so,
npm install jquery
https://www.npmjs.com/package/jquery