Вопрос

Мне удалось установить репозитории, в которых нет файла композитора.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"
            }
        }
    }

Есть идеи?

РЕДАКТИРОВАТЬ:добавляю полностью решение чтобы помочь @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"
                }
            }
        }
    ]
Это было полезно?

Решение

Это просто отсутствующая функция.Вероятно, должен быть новый тип DIST, который является просто одним файлом открытого текста, который будет загружен и оставлен как есть.ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, ОСОБЕННОСТЬ ОКТИРОВАНИЯ THE TRUSE TRUSTER: https://github.com/composer/composer/issues/

Редактировать:

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

"type": "file"
.

Другие советы

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

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

Это использует Установщик компонента для компонента и по умолчанию все активы из компонента установлены под components, но он может быть настроенОтказ( См. Docs ).

Как уже отмечалось, первая часть решения — это определение собственных репозиториев и "type: ": "file" опция определения репозитория.Но следующая проблема заключается в том, чтобы заставить композитора разместить JQuery там, где вы хотите.В нынешнем виде композитор, похоже, ограничен загрузкой источника зависимостей под vendor-dir (что раздражает, но, вероятно, связано с требованиями автозагрузки).Общее решение этого ограничения — написать плагин композитора, который его обходит.Кажется, есть несколько плагинов, которые могут с этим справиться.Самое простое и легкое решение, которое я нашел, это Менеджер ресурсов PHP Composer, который предназначен для управления «активами», не относящимися к 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": "*"
      }
    }
  }
}

Вы можете установить jQuery, используя NPM вроде,

npm install jquery
.

https://www.npmjs.com/package/jquery

Используйте npm, yarn или WebPack вместо композитора, они намного лучше для таких потребностей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top