在前一篇文章「PHP编程」如何制作自己的Composer包?中,我们已经介绍了如何制作自己的 composer 包,以及如何使用 composer 安装自己制作的 composer 包。不过,这其中有几个问题。首先,如果你使用 VCS 类型,那每引入一个 composer 包,你都要指定一个仓库地址;其次,如果你使用 composer 官方仓库,虽然可以直接使用 require 命令,但私有的代码也会被暴露。

那如何解决这两个问题呢?

我们可以搭建私有的 composer 包仓库!

Composer 官方有提供实现这个目标的工具,如 satis 和 toran、proxy。satis 搭建相对简单一些,下面我们就以 satis 来进行说明。

satis 仓库地址如下:

https://github.com/composer/satis

1、使用 composer 下载代码

composer create-project composer/satis:dev-master

2、在根目录创建 satis.json 配置文件,并指定自己创建的 composer 包的代码仓库地址,如下:

其中,name是 composer 包仓库,格式为:vender/packages。homepage 为 composer 包仓库地址,也即是 satis 的部署地址。 repositories 为每个包的代码仓库地址。require-all 可以固定为true。

3、在当前目录创建 web 目录作为 composer 仓库的部署目录,并执行编译命令,如下:

php bin/satis build satis.json web

4、部署编译后的代码,并将 web/index.html 作为首页,如下:

如此,一个私有的 composer 仓库就建好了,访问 homepage 指向的地址,你将看到如下界面

composer 安装dev包_「PHP编程」如何搭建私有Composer包仓库?相关推荐

  1. docker php composer 使用_「PHP编程」如何使用Docker制作自己的LNMP/LAMP镜像

    LNMP和LAMP是PHP常用的两种运行环境,L代表Linux,N代表Nginx,A代表Apache,M代表Mysql,P代表PHP.在文章<「PHP编程」安装开发环境太烦?告诉你几个简单方法, ...

  2. 自己本地搭建svn仓库_「PHP编程」如何制作自己的Composer包?

    PHP开发免不了要使用Composer,使用Composer有着明显的好处.一是可以很好的解决第三方包的相互依赖,二是可以方便进行代码的重用. 那如何制作自己的Composer包呢? 制作Compos ...

  3. 本地tomcat启动war包_「shell脚本」懒人运维之自动升级tomcat应用(war包)

    准备: 提前修改war包里的相关配置,并上传到服务器: 根据要自动升级的tomcat应用修改或添加脚本相关内容: tomcat启动脚本如是自己写的,要统一格式命名,如:xxx.xxxTomcat 等: ...

  4. java锁的有哪些_「并发编程」Java锁分类和特点有哪些

    公平锁.非公平锁:公平锁指多个线程按照申请锁的顺序来获取锁,非公平锁就是没有顺序完全随机,所以能会造成优先级反转或者饥饿现象:synchronized 就是非公平锁,ReentrantLock(使用 ...

  5. vc 获取月份的天数_「青少年编程」课程:输入年份与月份,得到该月有多少天...

    题目:输入年份与月份,说出该月共有多少天. 思路: 1.3.5.7.8.10.12每个月都有31天: 4.6.9.11每个月都有30天: 2月比较特殊,一般都是28天,遇到闰年(公历里:能被400整除 ...

  6. python闹钟界面程序_「Python编程」自由管理时间之编写一个小闹钟起床

    Python_时间管理 代码中的时间时间戳(Timestamp):1473525444 时间字符串(Format String):2015-02-14 11:25:11 结构化时间:(struct_t ...

  7. python画图包_「Python量化」股票分析入门

    目前,获取股票数据的渠道有很多,而且基本上是免费的,比如,行情软件有同花顺.东方财富等,门户网站有新浪财经.腾讯财经.和讯网等.Python也有不少免费的开源api可以获取交易行情数据,如pandas ...

  8. 多维数组的索引与切片_「GCTT 出品」Go 系列教程——11. 数组和切片

    Go语言中文网,致力于每日分享编码知识,欢迎关注我,会有意想不到的收获! Go 系列教程是非常棒的一套初学者教程,入门就它了. 「GCTT 出品」Go 系列教程--1. 介绍与安装 「GCTT 出品」 ...

  9. go 修改结构体方法_「GCTT 出品」Go 系列教程——26. 结构体取代类

    Go语言中文网,致力于每日分享编码.开源等知识,欢迎关注我,会有意想不到的收获! Go 支持面向对象吗? Go 并不是完全面向对象的编程语言.Go 官网的 FAQ 回答了 Go 是否是面向对象语言,摘 ...

最新文章

  1. mysql group by 天_MySQL group by语句如何优化
  2. Google 开源 Pigweed,涉足嵌入式开发
  3. Dwg图纸属性的读取
  4. slf4j的jar包冲突:LoggerFactory is not a Logback LoggerContext but Logback is on the classpath
  5. oracle 如何表分析,ORACLE的表分析策略
  6. prototype极速应用1
  7. 【2020牛客NOIP赛前集训营-提高组(第二场)】题解(GCD,包含,前缀,移动)
  8. 【Flink】FLink Assigned key must not be null
  9. 周鸿祎,会是下一个“贾跃亭”吗?
  10. 在Ubuntu 14.04安装和使用Docker
  11. PHP判断用户是否登录
  12. amd860k能装黑苹果吗_我的电脑可以安装黑苹果吗?
  13. golang 中strconv包用法
  14. 思科防火墙syslog 配置
  15. 安全 | 几种wifi密码破解的思路
  16. 理解什么是symbolic link in Python
  17. Linux隧道sit
  18. 微信小程序连接低功率蓝牙控制单片机上硬件设备
  19. R 回归 虚拟变量na_R语言 | 生存分析之R包survival的单变量和多变量Cox回归
  20. 寻路 pathfinder 狂乱画

热门文章

  1. 搭建hadoop分布式集群
  2. 字典含有重复的key不覆盖_EXCEL字典实例应用一(求首次和末次)
  3. android的actionbar及菜单机制,Android ActionBar基本使用方法
  4. 关键词之间用分号_如何选择关键词?快看这几个要点
  5. Spring @Value转义冒号(:)的默认值
  6. Kotlin入门(30)多线程交互
  7. Android Studio 2.3的各种新增疑难杂症
  8. Android开发笔记(三十三)文本文件和图片文件的读写
  9. uc点网页显示服务器升级,让uc浏览器网页加载速度提升100%
  10. P5112 FZOUTSY