PHP Composer — установить каталог поставщиков

У меня проблемы с настройкой пути поставщика для приложения Yii2. Я добавляю пару строк в файл composer.json, полученный из базового шаблона приложения Yii2. Все, что я хочу сделать, это изменить расположение активов моего поставщика.

Ниже приведены изменения, которые я внес в файлы, но получаю эту ошибку:

The file or directory to be published does not exist: /path/to/app/vendor/bower/jquery/dist

Но Я ожидаю, что этот конкретный актив будет опубликован:

/path/to/vendors/bower/jquery/dist

Что бы я ни делал, я все равно получаю это сообщение об ошибке. Я подозреваю, что это проблема Yii2, а не проблема композитора, но я не уверен. У кого-нибудь есть идеи? Заранее спасибо.

Файлы …

index.php

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require('/path/to/vendors/autoload.php');
require('/path/to/vendors/yiisoft/yii2/Yii.php');

$config = require(__DIR__ . '/../config/web.php');

(new yii\web\Application($config))->run();

composer.json

{
"name": "yiisoft/yii2-app-basic",
"description": "Yii 2 Basic Project Template",
"keywords": ["yii2", "framework", "basic", "project template"],
"homepage": "http://www.yiiframework.com/",
"type": "project",
"license": "BSD-3-Clause",
"support": {
...
},
"minimum-stability": "dev",
"config": {
"process-timeout": 1800,
"vendor-dir": "/path/to/vendors"},
"require": {
"fxp/composer-asset-plugin": "~1.0",
...
},
"extra": {
"asset-installer-paths": {
"npm-asset-library": "../../includes/vendors/npm",
"bower-asset-library": "../../includes/vendors/bower"}
}
}

8

Решение

Оказывается, есть простое решение: если вы хотите изменить местоположение активов вашего поставщика, вы должны выполнить следующие простые шаги:

  1. включите плагин composer-asset-plugin в свой composer.json файл

    "require": {
    "fxp/composer-asset-plugin": "*"}
    
  2. включите директиву composer-asset-plugin в вашу дополнительную конфигурацию. в вашем файле composer.json:

    "extra": {
    "asset-installer-paths": {
    "npm-asset-library": "../../path/to/vendors/npm",
    "bower-asset-library": "../../path/to/vendors/bower"}
    }
    
  3. добавьте местоположение поставщика в раздел конфигурации в вашем файле composer.json:

    "config": {
    "vendor-dir": "../../path/to/vendors"}
    
  4. обновите web / index.php, чтобы он указывал на местоположение нового поставщика:

    require(__DIR__ . '/../../../path/to/vendors/autoload.php');
    require(__DIR__ . '/../../../path/to/vendors/yiisoft/yii2/Yii.php');
    
  5. включите определение vendorPath в ваш config / web.php:

    'vendorPath' => '../../../path/to/vendors',
    

Это должно работать с ванильным базовым шаблоном Yii2.

10

Другие решения

Это работает для меня:

sudo cp -R bower-asset/* bower

Просто скопируйте все файлы и папки из Bower-активов в Bower.

2

asset-installer-paths директива принадлежит плагину Composer fxp/composer-asset-plugin,
Для работы этой директивы требуется плагин. Но кажется, что вы не требуете этого в своем репо проекта или в глобальном масштабе.

Попробуйте глобальную установку:

composer global require "fxp/composer-asset-plugin:~1.0"

Документ — Установка

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector