如何创建并发布你自己的第一个composer包到Packagist?

发布时间 - 2025-11-06 00:00:00    点击率:
创建PHP包需组织代码并编写composer.json;2. 将项目推送到GitHub并打标签;3. 提交仓库地址到Packagist,他人即可通过composer require安装使用。

创建并发布自己的 Composer 包其实并不复杂,只要掌握基本流程。你只需要写一段可复用的 PHP 代码,打包成符合 Composer 规范的结构,然后提交到 Packagist,其他人就能通过 composer require 安装使用。

准备你的 PHP 包

一个 Composer 包本质上是一个带有 composer.json 文件的 PHP 项目。你需要先组织好代码结构。

假设你要创建一个叫 my-first-package 的工具包,用于处理字符串反转:

  • 创建项目目录:mkdir my-first-package && cd my-first-package
  • 初始化目录结构:
    my-first-package/
    ├── src/
    │   └── StringHelper.php
    ├── composer.json
    └── README.md
        
  • src/StringHelper.php 中写个简单类:
    
      

配置 composer.json

这是最关键的文件,它告诉 Composer 包名、依赖、自动加载方式等信息。

运行 composer init 并按提示填写,或手动创建 composer.json

{
  "name": "your-vendor/my-first-package",
  "description": "A simple package to reverse strings",
  "type": "library",
  "license": "MIT",
  "authors": [
    {
      "name": "Your Name",
      "email": "you@example.com"
    }
  ],
  "require": {
    "php": "^7.4 || ^8.0"
  },
  "autoload": {
    "psr-4": {
      "MyName\\MyFirstPackage\\": "src/"
    }
  },
  "minimum-stability": "stable",
  "prefer-stable": true
}

注意:

  • name 格式为 vendor/package-name,vendor 通常是你的 GitHub 用户名或团队名。
  • autoload.psr-4 配置确保 Composer 能正确加载你的类。

推送到 GitHub(或其他 Git 平台)

Packagist 会从你的 Git 仓库拉取代码,所以需要先把项目托管出去。

  • 初始化 Git:git init
  • 添加并提交文件:git add . && git commit -m "Initial commit"
  • 创建 GitHub 仓库(比如叫 my-first-package
  • 关联远程并推送:
    git remote add origin https://github.com/your-vendor/my-first-package.git
    git branch -M main
    git push -u origin main
        
  • 打一个版本标签(Packagist 推荐):
    git tag v1.0.0
    git push origin v1.0.0
        

提交到 Packagist

现在去 Packagist 让全世界发现你的包。

  • 访问 https://www./link/ec811d0d775adc62776ba80fadd4ed19 并注册账号
  • 登录后点击右上角“Submit”
  • 粘贴你的 GitHub 仓库地址(如 https://github.com/your-vendor/my-first-package
  • 点击“Check” → “Submit”

提交后,Packagist 会抓取你的 composer.json 信息并展示包页面。别人就可以使用:

composer require your-vendor/my-first-package

每次你推送新标签(如 v1.1.0),Packagist 通常会自动更新(需启用 GitHub Webhook)。你也可以手动刷新页面上的“Update”按钮。

基本上就这些。不复杂但容易忽略细节,比如命名空间、PSR-4 路径、Git 标签。只要这几步走通,你就正式发布了第一个 Composer 包。


# php  # js  # git  # json  # composer  # github  # 工具  # ai  # 命名空间  # require  # 字符串  # 并发  # https  # 自己的  # 是一个  # 这是  # 第一个  # 你就  # 就能  # 你要  # 工具包  # 或其他  # 几步 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel如何生成API文档?(Swagger/OpenAPI教程)  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  如何在橙子建站上传落地页?操作指南详解  个人摄影网站制作流程,摄影爱好者都去什么网站?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  如何用低价快速搭建高质量网站?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Linux系统运维自动化项目教程_Ansible批量管理实战  如何基于PHP生成高效IDC网络公司建站源码?  详解CentOS6.5 安装 MySQL5.1.71的方法  图册素材网站设计制作软件,图册的导出方式有几种?  如何用花生壳三步快速搭建专属网站?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  长沙做网站要多少钱,长沙国安网络怎么样?  如何选择PHP开源工具快速搭建网站?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Firefox Developer Edition开发者版本入口  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  Swift开发中switch语句值绑定模式  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  个人网站制作流程图片大全,个人网站如何注销?  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  如何在阿里云虚拟服务器快速搭建网站?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  javascript如何操作浏览器历史记录_怎样实现无刷新导航  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  三星、SK海力士获美批准:可向中国出口芯片制造设备  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  如何在 React 中条件性地遍历数组并渲染元素  动图在线制作网站有哪些,滑动动图图集怎么做?  详解Android中Activity的四大启动模式实验简述  Laravel模型事件有哪些_Laravel Model Event生命周期详解  什么是javascript作用域_全局和局部作用域有什么区别?  开心动漫网站制作软件下载,十分开心动画为何停播?