如何在 composer.json 中配置 "bin" 字段来创建命令行工具?

发布时间 - 2025-11-28 00:00:00    点击率:
bin字段用于定义PHP可执行脚本,Composer会将其链接到vendor/bin目录;在composer.json中配置bin数组指定脚本路径,如"bin/my-command",需设置执行权限和Shebang,并在脚本中检查CLI模式及引入自动加载器,安装后即可通过命令行运行。

composer.json 中配置 "bin" 字段,可以让 Composer 自动将 PHP 脚本安装为可执行的命令行工具。当你发布一个包或在本地项目中定义 CLI 工具时,这个功能非常有用。

什么是 "bin" 字段?

"bin" 字段用于指定一个或多个可执行脚本文件(通常是 PHP 文件),Composer 会把这些文件链接到全局或项目的 vendor/bin 目录下,使它们可以通过命令行直接运行。

如何配置 bin 字段

composer.json 中添加 bin 键,并提供一个包含脚本路径的数组:

{
    "name": "your-vendor/cli-tool",
    "bin": [
        "bin/my-command",
        "bin/another-command"
    ],
    "require": {}
}

其中:

  • bin/my-command 是一个可执行的 PHP 脚本文件路径。
  • 该文件必须有执行权限(Unix 系统下可通过 chmod +x bin/my-command 设置)。
  • 文件开头应包含正确的 Shebang(如 #!/usr/bin/env php)。

编写可执行脚本示例

创建文件 bin/my-command

#!/usr/bin/env php



确保赋予执行权限:

chmod +x bin/my-command

安装与使用

当你通过 composer require your-vendor/cli-tool 安装这个包时,Composer 会自动把 my-command 链接到 vendor/bin/my-command

你可以这样运行它:

php vendor/bin/my-command

如果使用全局安装,且 Composer 的全局 bin 目录在系统 PATH 中,可以直接运行:

my-command

注意事项

  • 脚本文件应避免使用 .php 扩展名,以便更像原生命令。
  • Composer 不会重写已存在的同名命令,避免冲突。
  • 推荐在脚本中引入自动加载器(require __DIR__ . '/../vendor/autoload.php';),以便使用依赖库。

基本上就这些。正确配置 "bin" 后,你的 PHP 脚本就能像真正的命令行工具一样被调用。


# composer  # php  # js  # json  # 工具  # unix  # require  # 可执行  # 命令行  # 当你  # 可通过  # 是一个  # 自动加载  # 你可以  # 多个  # 并在  # 将其 


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


相关推荐: Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  Laravel如何实现用户密码重置功能?(完整流程代码)  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  javascript基本数据类型及类型检测常用方法小结  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  北京企业网站设计制作公司,北京铁路集团官方网站?  java中使用zxing批量生成二维码立牌  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何在阿里云域名上完成建站全流程?  Bootstrap整体框架之JavaScript插件架构  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  javascript读取文本节点方法小结  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  如何快速搭建虚拟主机网站?新手必看指南  java ZXing生成二维码及条码实例分享  如何在云虚拟主机上快速搭建个人网站?  ,南京靠谱的征婚网站?  如何在局域网内绑定自建网站域名?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  历史网站制作软件,华为如何找回被删除的网站?  Laravel怎么实现验证码(Captcha)功能  网站制作壁纸教程视频,电脑壁纸网站?  详解jQuery中的事件  php json中文编码为null的解决办法  linux top下的 minerd 木马清除方法  Laravel用户密码怎么加密_Laravel Hash门面使用教程  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel中的Facade(门面)到底是什么原理  如何在宝塔面板中创建新站点?  如何挑选高效建站主机与优质域名?  昵图网官网入口 昵图网素材平台官方入口  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  linux写shell需要注意的问题(必看)  高端智能建站公司优选:品牌定制与SEO优化一站式服务