At our company we have several sites that appear to have been made using the now deprecated method of composer create-project drupal/drupal
. We've been fine using previously documented methods to remove the replace block in composer.json and move the drupal/core require statement to update drupal/core.
However, I'm now running into a strange issue with a very specific Contributed Module that is detecting the `"name": "drupal/drupal" statement and version as 1.0, which then conflicts with dependencies it wants to install. I tried removing the name field since composer docs state it is only required for published packages, but this does not help resolve it.
Some other google results suggest that my drupal core is missing a .git repo that may be required to detect versions? How would I resolve this if it's the case? What else can I try?
Error, caused by composer require drupal/csv_serialization
:
Problem 1
- remove drupal/drupal No version set (parsed as 1.0.0)|remove drupal/core 8.6.1
- don't install drupal/core 8.6.1|remove drupal/drupal No version set (parsed as 1.0.0)
- don't install drupal/core 8.6.1|remove drupal/drupal No version set (parsed as 1.0.0)
- Installation request for drupal/drupal No version set (parsed as 1.0.0) -> satisfiable by drupal/drupal[No version set (parsed as 1.0.0)].
- Installation request for drupal/core (locked at 8.6.1, required as ^8.6) -> satisfiable by drupal/core[8.6.1].
composer.json:
{
"name": "drupal/drupal",
"description": "Drupal is an open source content management platform powering millions of websites and applications.",
"type": "project",
"license": "GPL-2.0-or-later",
"require": {
"composer/installers": "^1.0.24",
"wikimedia/composer-merge-plugin": "^1.4",
"drupal/core": "^8.6",
"drush/drush": "^9.4",
"symfony/http-kernel": "^3.4",
"symfony/http-foundation": "^3.4"
},
"minimum-stability": "dev",
"prefer-stable": true,
"config": {
"preferred-install": "dist",
"autoloader-suffix": "Drupal8"
},
"extra": {
"_readme": [
"By default Drupal loads the autoloader from ./vendor/autoload.php.",
"To change the autoloader you can edit ./autoload.php.",
"This file specifies the packages.drupal.org repository.",
"You can read more about this composer repository at:",
"https://www.drupal.org/node/2718229"
],
"merge-plugin": {
"include": [
"core/composer.json"
],
"recurse": true,
"replace": false,
"merge-extra": false
},
"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"]
}
},
"autoload": {
"psr-4": {
"Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
}
},
"scripts": {
"pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
"post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
"post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
"post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
"drupal-phpunit-upgrade-check": "Drupal\\Core\\Composer\\Composer::upgradePHPUnit",
"drupal-phpunit-upgrade": "@composer update phpunit/phpunit --with-dependencies --no-progress",
"phpcs": "phpcs --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --",
"phpcbf": "phpcbf --standard=core/phpcs.xml.dist --runtime-set installed_paths $($COMPOSER_BINARY config vendor-dir)/drupal/coder/coder_sniffer --"
},
"repositories": [
{
"type": "composer",
"url": "https://packages.drupal.org/8"
}
]
}
"conflict": { "drupal/drupal": "*" }
. You may need to change thename
of your package to make that workcomposer composerize-drupal --no-update
, because it also moved me from 8.6.1 to 8.6.3. So I did agit reset --hard
and then ran again with that to more preferable results. I prefer to keep my git commits tied to one single intention, so I'll run core updates later.