2014-09-05 6 views
4

Я пытаюсь установить компоненты JQuery с помощью Composer в CakePHP приложение, в composer.json:Composer устанавливает компоненты JQuery в неверном каталоге

{ 
    "name": "affiliate", 
    "require": { 
     "cakephp/cakephp": "2.5.*", 
     "cakephp/debug_kit": "2.2.*@dev", 
     "cakedc/utils": "dev-develop", 
     "cakedc/search": "dev-develop", 
     "friendsofcake/crud": "3.*", 
     "components/jquery": "2.*" 
    }, 
    "config": { 
     "vendor-dir": "Vendor/" 
    } 
} 

И он устанавливает некоторые файлы в app/Vendor/components/jquery, но также создает и устанавливает некоторые файлы в корне APP - app/components/jquery. Я хотел бы иметь все в Vendor, как я могу это исправить?

ответ

12

Пакет components/jquery использует component-installer, который может считывать данные из вашей composer.json указанной component-dir обстановки, где вы хотите поместить загруженные компоненты - например, в вашей папке web/assets:

{ 
    "require": { 
     "components/jquery": "*" 
    }, 
    "config": { 
     "component-dir": "web/assets" 
    } 
} 

Чтобы узнать больше об этом проверить документы here.

Затем вы можете добавить эти загруженные файлы компонентов в веб/активы в свой .gitignore, чтобы вы не добавляли файлы, загружаемые менеджером пакетов.

Если вы не поклонник этого подхода, то один другой вариант, что вы можете добавить свой собственный репозиторий пакетов для вашей composer.json так:

{ 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name": "jquery/jquery", 
       "version": "2.1.1", 
       "dist": { 
        "url": "http://code.jquery.com/jquery-2.1.1.js", 
        "type": "file" 
       } 
      } 
     } 
    ], 
    "require": { 
     "jquery/jquery": "2.1.1" 
    } 
} 

При таком подходе, композитор будет загрузить JS файл до vendor/jquery/jquery/jquery-2.1.1.js - вы можете добавить символическую ссылку на это из своего корневого каталога www.

+1

Отлично, спасибо! Я выбрал первое решение, поэтому 'component/jquery' на самом деле является зависимостью ivaynberg/select2', поэтому проще просто изменить' component-dir'. – redd

+0

Пожелаем, чтобы мы могли передать этот материал в/dev/null. Используя assetic, я предпочитаю извлекать определенные части из фактических папок поставщика. Спасибо за это, хотя теперь я могу хотя бы вытащить его из корня. – Saeven

Смежные вопросы