Drupal Composer 系列四:更多

对于 Composer 的介绍,差不多进入尾声了,再继续介绍一点相关的内容。

 

一、autoload 优化

使用 composer ,一个好处就是会自动生成 autoload.php 文件,至于 autoload 怎么使用等问题,请查看相关文档。

在这里我想提醒的是,在使用 composer 时,大家可能忽略掉的一个操作,那就是可能忽略了对 autoload 进行优化,特别是在生产环境,强烈推荐对其进行优化。

autoload 优化有不同的层级,或者说不同的方式。

一种方式是在 composer.json 文件中的 config 键里设置

"config": {
    "optimize-autoloader": true
},

 

更多方式及其背后的原理请查看文档:

https://getcomposer.org/doc/articles/autoloader-optimization.md

 

有人做了一个测试:

http://mouf-php.com/optimizing-composer-autoloader-performance

测试了一个基于某框架的 hello world 应用,优化 autoload 后性能提升约 37%。

可以看到,一个小小的操作,带来的性能提升是相当可观的。

另外,如果敢兴趣,也可以查看一下 composer 项目里 autoload 相关的一个已经合并的 PR (Pull Request):

Speedup autoloading on PHP 5.6 & 7.0+ using static arrays #5174

链接:

https://github.com/composer/composer/pull/5174

 

二、Drupal 核心更新

Drupal 核心发布新版本时,需要对其进行及时更新,代码部分则由 Composer 完成更新:

composer update drupal/core symfony/* --with-dependencies -vvv

代码更新后,需要进一步更新数据库,可以访问 /update.php 或运行 drush updb 命令完成数据库的更新。

参考:

https://github.com/drupal-composer/drupal-project#updating-drupal-core

 

三、Commerce  更新

composer update --with-dependencies drupal/commerce drupal/commerce_price drupal/commerce_product drupal/commerce_order drupal/commerce_payment drupal/commerce_payment_example drupal/commerce_checkout drupal/commerce_tax drupal/commerce_cart drupal/commerce_log drupal/commerce_store drupal/commerce_promotion

参考:

https://docs.drupalcommerce.org/commerce2/developer-guide/install-update/updating

 

四、composer.lock 文件

如果使用了版本控制工具,比如 git,一定要将 composer.lock 文件放入代码库管理起来。

 

五、composer why

composer why 命令,查看为什么这个包被安装,被哪个包列为了依赖。在 Troubleshooting 的时候可能会用到。

 

六、提议:在Drupal 核心里提供对 Composer 的支持

一个来自 Webchick 的提议,一个值得关注的提议:

Proposal: Composer Support in Core initiative

链接:

https://www.drupal.org/project/ideas/issues/2958021

评论 (写第一个评论)