分享几个关于 Composer 使用小技巧

技巧库 · echo · 于 4年前 发布 · 3965 次阅读

使用 Composer 给你的项目添加全局方法

之前教你在 Yii2 中添加全局函数 有分享。

在 composer.json 文件里面添加如下代码:

"autoload": {
    "files": [
      "common/components/GlobalFunctions.php"
    ]
},

添加完之后记得用终端在项目根目录下执行 composer dump 命令。

替换某个类

有时候我们通过 Composer 使用第三方类或者框架,遇到一个类不满足我的需求,通常的方法你可能会去修改源码。

但是我非常不推荐这个做法,因为这意味着你在挖坑。这里我分享一个方法:

在 composer.json 文件里面添加如下代码:

"autoload": {
    "classmap":[
        "common/components/AccessToken.php"
    ]
},

common/components/AccessToken.php 这个文件是你复制要修改的类文件到 components 文件夹下面。 然后你就可以随便改代码了,这个类的命名空间不需要改,保留之前的。

最后记得用终端在项目根目录下执行 composer dump 命令。

Composer 执行脚本

场景:我们使用第三方主题包,比方说是 AdminLTE ,但是这个主题有点坑的地方是它 css 使用的是 Google CDN, Google 我们不翻墙的情况下我们根本使用不了,这么坑,怎么办?不要告诉我你直接去修改源码。

下面我分享一个方法:

在 composer.json 文件里面添加如下代码:

"scripts": {
    ...
    "post-install-cmd": [
        "common\\components\\ComposerInstaller::initProject"
    ],
    "post-update-cmd": [
        "common\\components\\ComposerInstaller::initProject"
    ]
    ...
},

上面命令就是指你使用 composer installcomposer update 命令最后会执行你配置的这个方法。

至于方法怎么写,要你自己去实现吧,大概就是正则查找替换,程序自动完成,保证不会出错。

忽略安装时限制

比方说团队合作的时候,项目同时安装了一个扩展,但是这个扩展 composer.json 文件限制了要求要 mongodb 的扩展,而此刻等电脑的环境没有安装这个 mongodb,而且我可以本地环境可以不使用此功能,但是我又要安装令一个 composer 的时候就会提示我,这个时候我们可以忽略安装时限制:

$ composer require yiisoft/yii2-mongodb --ignore-platform-reqs

临时解决不想装扩展的问题

$ composer install --ignore-platform-reqs

查看已安装的包及对应的版本号

$ composer show --installed

PS:使用 $ composer show -p 命令可以查看平台软件包(PHP 与它的扩展)。

自动加载索引

某些情况下(修改 composer.json 文件但是又不是改变包的情况下)你需要更新 autoloader,例如在你的包中加入了一个新的类。你可以使用 dump-autoload 来完成,而不必执行 install 或 update 命令。

$ composer dump

并行安装

使用 prestissimo 可以并行安装,加快安装速度。

待续……

希望大家也可以分享一些你的使用 composer 的小技巧。

本文由 echo 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

本帖已被设为精华帖!
共收到 1 条回复 Composer 分享
Kittyfamous#13年前 1 个赞

真棒

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册