композитор для установки пакета или модуля по пользовательскому пути?

#php #module #drupal-8

#php #модуль #drupal-8

Вопрос:

Я попытался установить модуль Drupal с помощью composer по определенному пути,

Я проверяю эти ссылки, но не могу этого понять.

Пожалуйста, проверьте это и скажите мне, что не так и что я должен делать?

Чего я хочу?

Установите модуль поля подписи в modules/patched каталог.

это часть моего composer.json файла, связанная с этой проблемой.

 "require": {
    "composer/installers": "^1.0.24",
    "drupal/signature_field": "^1.0@RC",
},

    "installer-paths": {
        "core": ["type:drupal-core"],
        "modules/contrib/{$name}": ["type:drupal-module"],
        "profiles/contrib/{$name}": ["type:drupal-profile"],
        "themes/contrib/{$name}": ["type:drupal-theme"],
        "drush/contrib/{$name}": ["type:drupal-drush"],
        "modules/custom/{$name}": ["type:drupal-custom-module"],
        "themes/custom/{$name}": ["type:drupal-custom-theme"],
        "modules/patched/{$name}": ["type:drupal-patched-module"]
    },
    "patches": {
        "drupal/signature_field": {
            "Drupal Signature Field fix multi feilds": "modules/patched/signature_field/signature_field-2993223-08.patch"     
        }
    }
},
 

В конце я делаю composer install и composer update , но модуль не переносится в нужную мне папку

Ответ №1:

Может быть, это могло бы помочь (примечание о extra ):

 {
    "extra": {
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/signature_field"],
            "modules/patched/{$name}": ["another/package"]
        }
    }
}
 

Ссылка, Комментарий на GitHub

Вероятно, это сработало бы:

 {
    "extra": {
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/signature_field"]
        }
    },
    "extra": {
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/another_module"]
        }
    }
}
 

или

 {
    "extra": {
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/signature_field"]
        },
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/another_module"]
        }
    }
}
 

Также,

Вы не можете использовать это для изменения пути к какому-либо пакету. Это применимо только к пакетам, для которых требуются композиторы / установщики и которые используют пользовательский тип, который он обрабатывает.

Вы также можете сгруппировать свои пакеты по type :

 {
    "extra": {
        "installer-paths": {
            "your/custom/path/{$name}/": ["type:wordpress-plugin"]
        }
    }
}
 

или определенные vendor :

 {
    "extra": {
        "installer-paths": {
            "your/custom/path/{$name}/": ["vendor:drupal"]
        }
    }
}
 

Комментарии:

1. Это работает, но как насчет того, когда у меня есть пара модулей с этим случаем, как я должен добавить?

2. Вы имеете в виду, что хотите добавить более одного модуля в один и тот же путь?

3. в этом случае композитором будет применен только первый, любой другой в следующем будет проигнорирован, в данном случае только поле подписи

4. Вы пробовали создавать отдельные extra поля для каждого пакета, который вам нужно установить в определенный каталог?

5. это неправильно, что я добавляю по одному дополнительному для каждого пакета, возможно, существует 100 пакетов, в которые должно быть добавлено не менее 200 дополнительных строк кода.

Ответ №2:

там мы должны определить пользовательский путь и определить, какой модуль или пакет следует установить по этому пути.

вот так

 "installer-paths": {

    // custom path with the list of items that should installed there.

    "modules/patched/{$name}": [
        "drupal/signature_field",
        "drupal/eck",
        "drupal/auto_entitylabel"
    ],
}
 

Пакет или модуль также должны быть в вашем разделе require.

 "require": {
        "composer/installers": "^1.0.24",
        "drupal/auto_entitylabel": "2.x-dev",
        "drupal/signature_field": "^1.0@RC",
        "drupal/eck": "^1.0@alpha",
}