使用composer/installers自定义包的安装路径,用来管理js css image等资源
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。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/.....
其实按类型来分别定位到对应的文件夹是最方便的,这也是说为什么前面包的名字和类型要按那个规则来定的原因