首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用作曲家更新核心?

问如何用作曲家更新核心?
EN

Drupal用户
提问于 2016-06-16 19:52:15
回答 1查看 6K关注 0票数 10

好吧,无可否认我是个作曲家新手。因此,在我以前的站点中,我使用composer经理来更新Drupal的核心。这是非常直接的使用(只运行"composer drupal“)。然而,作曲家经理现在表示,这是不可取的。

由于Drupal8.1的改进,这个模块的Drupal 8版本不再受欢迎,不再需要。直接使用Composer获取所需的模块,这些模块还将下载所需的库。

所以今天我收到了一个警告,我需要对core应用安全更新,但是我找不到任何关于如何用composer更新Drupal的文档。

这是通过Drupal控制台、Drush完成的还是运行实际的composer命令?我不太清楚在“从drupal.org下载最新版本的Drupal并手动替换所有文件”之外的首选进程是什么。

EN

回答 1

Drupal用户

发布于 2016-07-19 09:54:00

要使用Composer更新Drupal,只需将"drupal/core": "~8.1"行从替换部分移到require部分即可。最后,composer.json文件的内容如下所示。

代码语言:javascript
复制
{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0+",
    "require": {
        "composer/installers": "^1.0.21",
        "wikimedia/composer-merge-plugin": "~1.3",
        "drupal/core": "~8.1"
    },
    "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."
        ],
        "merge-plugin": {
            "include": [
                "core/composer.json"
            ],
            "recurse": false,
            "replace": false,
            "merge-extra": false
        }
    },
    "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"
    },
}

我习惯于运行drush upc来更新Drupal,但这覆盖了我的composer.json文件和供应商目录。因此,我应该一直运行composer update来更新供应商目录的内容。

现在,使用Composer更新Drupal,我也可以使用它下载/更新我正在使用的模块。

我使用的composer.json文件如下所示。

代码语言:javascript
复制
{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0+",
    "require": {
        "composer/installers": "^1.0.21",
        "wikimedia/composer-merge-plugin": "~1.3",
        "drupal/core": "~8.1",
        "drupal/imagick": "8.1.*@dev",
        "drupal/mollom": "^8.1",
        "drupal/honeypot": "^8.1"
    },
    "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."
        ],
        "merge-plugin": {
            "include": [
                "core/composer.json"
            ],
            "recurse": false,
            "replace": false,
            "merge-extra": false
        }
    },
    "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"
    },
    "repositories": {
        "drupal": {
            "type": "composer",
            "url": "https://packagist.drupal-composer.org"
        }
    }
}

除了像我说的那样移动这一行之外,我还执行了以下命令。

代码语言:javascript
复制
composer config repositories.drupal composer https://packagist.drupal-composer.org
composer require drupal/honeypot
composer require drupal/mollom
composer require drupal/imagick 8.1.*@dev

第一个允许我需要Drupal模块并更新它们。

上一次尝试时,Drupal官方存储库仍然处于alpha阶段,它给我带来了一些问题,那些模块将自己声明为Composer包,但没有设置包类型(即drupal-模块)。我希望他们现在解决了这个问题。对于Drupal存储库,要使用的命令如下。

代码语言:javascript
复制
composer config repositories.drupal composer https://packages.drupal.org/8
composer require drupal/honeypot
composer require drupal/mollom
composer require drupal/imagick 1.*@dev

如果您已经在使用https://packagist.drupal-composer.org,并且希望使用官方Packagist站点进行替换,则需要将第一个命令替换为composer config repositories.0 composer https://packages.drupal.org/8,如果您没有基于使用packages.drupal.org的其他存储库,则该命令可以工作。

还请注意,2017年或Drupal.org的官方软件包库准备就绪定于年1月(月)取消。

票数 10
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/204376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档