composer私有库引入

基础知识

引入的库必须要有composer.json,所以composer.json属性必须要有了解

// composer.json
{
  "name": "mysql/package", 	// 包名,必填。且必须有“/”。引入时,会有错误提示的正则表达式
  "description": "this is mysql package", // 包介绍,非必填。
  "version": "v1.0.0", 	// 版本,非必填,通常是不用的,都是通过tag去当版本号
  "type": "library", // 类型,非必填,默认就是library
  "keywords": ["logging", "events"],	// 关键字,非必填
	"license": "Apache-2.0", // 许可证,非必填
  "authors": [	// 作者,非必填
     {
       "name": "Nils Adermann",
       "email": "naderman@naderman.de",
       "homepage": "https://www.naderman.de",
       "role": "Developer"
     },
  ],	
  "require": {
    "monolog/monolog": "1.0.1"	// 引用
  },
  "autoload": [],	// 自动引入,psr4
  "repository": [	// 自定义存储库,就是源(私有库或者其他公开的库源)。这个放到后面下一张着重讲
    
  ]
}

官方文档:https://getcomposer.org/doc/04-schema.md#json-schema

私有库引入

方法

通过repository指定引入库的放,composer提供了3种方法|:

  • VSC:通过版本控制器
  • composer:通过依赖管理器
  • Packagist

前提

以github为例。

  1. 创建一个私有仓库,仓库内添加composer.json
{
  "name": "qsl/fpmdocker",	// 我的私有报名
  "auth": [
    {
       "name": "qsl",
       "email": "497205842@qq.com",
       "homepage": "",
       "role": "Developer"
     },
  ],
  "requires": {	// 我的包引用的包名
    "monolog/monolog": "dev-master"
  }
}

vsc

通过版本控制器获取包,直接通过git/svn验证,然后拉取包

// 这个项目需要引用qsl/fpmdocker包
// composer.json
{
  "name": "qsl/project",	// 我的私有报名
  "auth": [
    {
       "name": "qsl",
       "email": "497205842@qq.com",
       "homepage": "",
       "role": "Developer"
     },
  ],
  "repositories": [	// 指定源
    {
      "type": "vsc",	// 拉去类型
      "url": "git@github.com:qiushenglei/nginx-fpm-docker.git"
		}
  ],
  "requires": {	// 我的包引用的包名
    "qsl/fpmdocker": "~v1.0.2"	// 包名 + 版本号(分支 或者 tag)
  }
}

composer update

satis

这个是一个简单的个人私有包管理工具

https://github.com/composer/satis

需要搭建一个satis服务,去扫描指定的仓库内容(他会帮你读出所有满足条件的tag 和 branch),做成一个私有源

  1. 下载satis

     composer create-project composer/satis:dev-main
    

​ 这里遇到一个报错,提示是composer/stais这个有个大写的引用,直接去composer.json把大写改成小写就行

  1. path/to/satis目录下创建一个satais.json 文件
// satis.json
{
 "name": "qsl_satis",
 "homepage": "https://qsl.satis.com",	// 以后包引用的地址
 "repositories": [	
   {
     "type": "git",									// satis通过csv去拉A取包
     "url": "git@github.com:qiushenglei/nginx-fpm-docker.git"
   },
   {
     "type": "git",									// satis通过csv去拉B取包
     "url": "git@github.com:qiushenglei/example.git"
   }
 ],
 "require-all": false,
 "require-dependencies": true,
 "require-dev-dependencies": true,
 "require": {
   "php-amqplib/php-amqplib": "^v3.5.3",
   "qiushenglei/fpmdocker": "*"
 },
 "archive": {
   "directory": "dist",
   "format": "zip",
   "skip-dev": true
 },
 "config": {
   "secure-http": false
 }
}
  1. 通过php脚本去获取包
php bin/satis build <configuration-file> <output-directory>
  1. 项目通过 指定 私有的源,来拉取数据
// 
// 这个项目需要引用qsl/fpmdocker包
// composer.json
{
  "name": "qsl/project",	// 我的私有报名
  "auth": [
    {
       "name": "qsl",
       "email": "497205842@qq.com",
       "homepage": "",
       "role": "Developer"
     },
  ],
  "repositories": [	// 指定源
    {
      "type": "composer",	// 拉去类型
      "url": "https://qsl.satis.com"	// 私有源地址
		}
  ],
  "requires": {	// 我的包引用的包名
    "qsl/fpmdocker": "~v1.0.2"	// 包名 + 版本号(分支 或者 tag)
  }
}

以下列举一下常用于源

https://packagist.org/ (官方源)

https://mirrors.aliyun.com/composer/ (阿里云)

之前遇到一个问题,有一个文件丢失导致系统启动失败,composer.json引入的包指向的是dev-master分支,去github去查看master分支是有这个文件。去官方源看到的包版本的commit也是master分支的commit。

后来发现,composer.json的 repositories.type == composer 修改了源,指向的是阿里云源。阿里云源没有更新版本控制,还是只指向了老版本。

这个问题的反思就是:如果要用私有源(satis服务),就开个定时脚本 通过satis去扫描仓库,更新源内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建一个 PHP 私有,可以使用 SVN 和 Composer。下面是搭建步骤: 1. 安装 SVN 首先需要在服务器上安装 SVN。可以使用以下命令在 Ubuntu 上安装: ```shell sudo apt-get update sudo apt-get install subversion ``` 2. 创建 SVN 仓 在 SVN 中创建一个仓来存储你的 PHP 代码。可以使用以下命令创建一个名为 `myrepo` 的仓: ```shell sudo svnadmin create /var/svn/myrepo ``` 3. 配置 SVN 用户 在 SVN 中添加一个用户来访问仓。可以使用以下命令添加一个名为 `svnuser` 的用户: ```shell sudo htpasswd -cm /etc/apache2/dav_svn.passwd svnuser ``` 输入密码并确认,这将创建一个密码文件 `/etc/apache2/dav_svn.passwd`。 4. 配置 Apache 接下来,需要配置 Apache 服务器来允许访问 SVN 仓。可以使用以下命令在 Ubuntu 上安装 Apache: ```shell sudo apt-get install apache2 ``` 然后,需要启用以下两个 Apache 模块: ```shell sudo a2enmod dav sudo a2enmod dav_svn ``` 接下来,需要在 Apache 配置文件中添加以下内容: ```apache <Location /svn> DAV svn SVNParentPath /var/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location> ``` 这将允许从 `http://your-domain/svn` 访问 SVN 仓。 5. 安装 Composer 安装 Composer 可以使用以下命令: ```shell curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer ``` 6. 创建 Composer 包 现在可以创建一个 Composer 包并将其上传到 SVN 仓。可以使用以下命令创建一个名为 `mypackage` 的 Composer 包: ```shell composer init ``` 然后,将包上传到 SVN 仓: ```shell svn import /path/to/mypackage file:///var/svn/myrepo/trunk -m "Initial commit" ``` 7. 配置 Composer 私有 最后,需要配置 Composer 来使用私有。可以在 `composer.json` 文件中添加以下内容: ```json { "repositories": [ { "type": "vcs", "url": "http://your-domain/svn/myrepo/trunk" } ], "require": { "myvendor/mypackage": "dev-master" } } ``` 然后运行 `composer install` 命令来安装包。 现在,你已经成功地搭建了一个 PHP 私有,可以使用 SVN 和 Composer 来管理你的 PHP 代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值