Как установить jQuery с помощью Composer?

51

Мне удалось установить репозитории, у которых нет файла composer.json следующим образом:

    {
        "type": "package",
        "package": {
            "name": "yahoo/yui-compressor",
            "version": "2.0.4",
            "dist": {
                "url": "http://yui.zenfs.com/releases/yuicompressor/yuicompressor-2.4.7.zip",
                "type": "zip"
            }
        }
    },

Я взял "тип": "zip" часть из документов, но я не мог найти много других типов. Например, мне нужно установить jQuery, но я не знаю, что вводить в тип ( "js" не работает).

    {
        "type": "package",
        "package": {
            "name": "jquery/jquery",
            "version": "1.7.2",
            "dist": {
                "url": "http://code.jquery.com/jquery-1.7.2.js",
                "type": "js"
            }
        }
    }

Любые идеи?

EDIT: я добавляю полное решение, чтобы помочь @CMCDragonkai:

    "require": {
        "vendorname/somefile": "1.2.3",
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "vendorname/somefile",
                "version": "1.2.3",
                "dist": {
                    "url": "http://example.com/somefile.txt",
                    "type": "file"
                }
            }
        }
    ]
  • 1
    В настоящее время я использую CDN , но я бы хотел получить jQuery от Composer или подмодули git. Мне не нравится идея добавлять сторонние библиотеки в мои репозитории. Кстати, популярность JS на GitHub переоценена из-за того, что происходит все это JS copypasta.
  • 1
    2013 год почти закончился, и до сих пор нет пакета jquery / jquery. Это действительно странно.
Показать ещё 9 комментариев
Теги:
composer-php

3 ответа

31
Лучший ответ

Это просто недостающая функция. Вероятно, должен быть новый тип dist, который представляет собой только один файл открытого текста, который нужно загрузить и оставить как есть. Пожалуйста, напишите запрос функции на трекер github: https://github.com/composer/composer/issues/

EDIT:

Функция фактически существует, но не была документирована.

"type": "file"
  • 1
    Спасибо, я подал эту проблему только сейчас: github.com/composer/composer/issues/946
  • 0
    Stof прокомментировал проблему, функция существует. Я отредактировал твой ответ.
Показать ещё 5 комментариев
40

На самом деле есть простой способ установить jQuery, просто введите:

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

Он использует Component Installer for Composer и по умолчанию все активы из Component установлены под components, но его можно настроить. (см. документы).

  • 0
    Это не имеет ничего общего с управлением пакетами компонентов javascript, не так ли?
  • 0
    components/jquery - это Shim-репозиторий для jQuery, и то же репо работает с Bower, Component и Composer
Показать ещё 2 комментария
2

Как уже говорилось, первая часть решения определяет ваши собственные репозитории и параметр определения "type: ": "file" репозитория. Но следующая проблема заключается в том, что композитор должен поставить JQuery там, где вы хотите. В сущности, композитор, похоже, ограничен загрузкой источника зависимости в vendor-dir (что раздражает, но, вероятно, связано с требованиями к автозагрузке). Общее исправление этого ограничения - написать плагин композитора, который его преодолеет. Кажется, это несколько плагинов, которые могут управлять этим. Самое простое облегченное решение, которое я нашел, это PHP Composer Asset Manager, который предназначен для управления неинтерфейсами PHP/Composer. Хотя, у него есть хотя бы одно ограничение в том, что изменения, которые делает плагин, не управляются/не распознаются композитором. Все еще можно использовать.

Здесь полный composer.json для установки JQuery с помощью этого плагина:

{
  "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": "*"
      }
    }
  }
}
  • 0
    Внимание: стоит заметить, что имена пакетов, обработанные плагином Asset Manager, все строчные . Если вы использовали пакеты в верхнем регистре букв в «require», плагин никогда не будет сопоставлять их, даже если вы напишите их так же в его разделе «packages».
  • 1
    Также обратите внимание на перехват событий - getcomposer.org/doc/articles/scripts.md . Я использую это сейчас. ПОЦЕЛУЙ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню