使用composer/installers自定义包的安装路径,用来管理js css image等资源

来源:赵克立博客 分类: PHP 标签:Composer发布时间:2019-01-13 01:57:03最后更新:2019-04-06 11:30:39浏览:1593
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-04-06 11:30:39
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

问题描述

composer使用过程中每个包默认就是library,里面都是一些php类库,但是里面其实是任何内容都可以放的,比如放一些网站用的js css image等文件,但是这些文件肯定不能在vendor这个目录里,需要我们自定义放到web目录里,其实使用 composer/installers 就可以实现这个可能,只不过得自己写个composer plugin 来实现,幸好已经有人写好啦一个 https://github.com/oomphinc/composer-installers-extender  下面是使用方法

解决方法

正常创建一个放js css images composer包,但是类型改为 ank-asset 这个名字可以随意,记好后面要用到的。建议命名包名字为  类型/名字  如下,注意里面的依赖库加上

{
    "name": "ank-asset/admin",
    "type": "ank-asset",
    "license": "MIT",
    "minimum-stability": "dev",
    "authors": [
    {
        "name": "mokuyu",
        "email": "735579768@qq.com"
    }],
    "extra":
    {
        "branch-alias":
        {
            "dev-master": "1.0.x-dev"
        }
    },
    "require":
    {
        "oomphinc/composer-installers-extender": "1.1.2"
    }
}

记好这个包的名字和类型。在你项目用到这个包的时候,在你项目的根包composer.json中添加下面配置项

"extra":
{
    "branch-alias":
    {
        "dev-master": "1.0.x-dev"
    },
    "installer-types": ["ank-asset"],
    "installer-paths":
    {
        "web/public/admin/":["ank-asset/admin"],
        "web/public/{$name}/": ["type:ank-asset"]
    }
}

主要就是installer-types 和 installer-paths 这两项 installer-types主要是过滤要自定义目录的类型可以加多个,installer-paths 里面是设置这些包放哪个地方的

一种是直接对应的包放在对应的位置,另一种是根据类型来放到指定的位置里面可以使用一个点位符 {$name} 会被替换成对应的名字 比如  ank-asset/admin  下载后代码会被放在  web/public/admin/.....

image.png



其实按类型来分别定位到对应的文件夹是最方便的,这也是说为什么前面包的名字和类型要按那个规则来定的原因


注意:资源位置的配置项要放在根包的配置文件里才有效,资源包里只用设置好类型来依赖就可以按正常的包加载


微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python