如何在composer.json中定义项目的bin目录?(命令行工具开发)


Composer 通过 config.bin-dir 指定可执行脚本安装目录,如 "bin";依赖包的 bin 文件及自定义工具(需在 composer.json 的 bin 字段声明)均会部署至此;配置 PATH 后可全局调用。

如何在composer.json中定义项目的bin目录?(命令行工具开发)

Composer 本身不提供直接配置 bin 目录路径的字段,但你可以通过 bin-dir 配置项来指定项目中可执行脚本(即命令行工具)安装到的目录。

设置 bin-dir 指向自定义 bin 目录

composer.jsonconfig 段中添加 bin-dir 字段,值为相对路径(相对于项目根目录):

{
  "config": {
    "bin-dir": "bin"
  }
}

执行 composer installcomposer update 后,所有依赖包中声明的二进制文件(如 phpunitlar*el 等)都会被软链接或复制到 ./bin/ 目录下。

让自己的命令行工具被 Composer 自动识别

如果你正在开发一个命令行工具(比如 mytool),需在 composer.json 中声明 bin 字段,指向你的可执行脚本:

Boomy Boomy

AI音乐生成工具,创建生成音乐,与世界分享.

Boomy 368 查看详情 Boomy
{
  "bin": ["bin/mytool"],
  "config": {
    "bin-dir": "bin"
  }
}
  • bin/mytool 必须是可执行文件(Linux/macOS 下有 x 权限;Windows 下可为 .bat.php 文件)
  • 文件开头建议加上 shebang(如 #!/usr/bin/env php),确保能被直接运行
  • 该脚本通常 require 项目 autoload 并调用主逻辑类

确保命令可全局调用(可选但推荐)

./bin 加入系统 $PATH,就能在项目任意子目录下直接运行你的命令:

  • Linux/macOS:在 ~/.bashrc~/.zshrc 中添加 export PATH="./bin:$PATH"(注意:此写法仅在当前目录生效;更稳妥的是用绝对路径或 alias)
  • 开发时常用方式:在项目根目录运行 export PATH=$(pwd)/bin:$PATH
  • CI/CD 或部署时,可将 bin 目录加入环境变量或使用全路径调用

验证是否生效

运行以下命令检查:

  • composer config bin-dir —— 查看当前配置的 bin 目录
  • ls -l bin/ —— 确认你的脚本是否已出现在该目录
  • bin/mytool --version —— 直接执行测试
  • which mytool(若已配置 PATH)—— 看是否能被 shell 找到

以上就是如何在composer.json中定义项目的bin目录?(命令行工具开发)的详细内容,更多请关注php中文网其它相关文章!


# 为你  # 清远市seo报价  # 网站推广 具体内容  # 稳定的机票网站建设  # 台州seo网络优化  # 山南手机网站建设  # 银川网站建设优化推广  # 石家庄seo优化如何  # 面试seo提问  # 寒亭区企业网站建设作用  # 绵竹电商型网站建设  # 的是  # 自己的  # 何为  # 一键  # 自定义  # php  # 可执行  # 如何在  # 如何使用  # 命令行  # 环境变量  # macos  # mac  # 工具  # windows  # composer  # json  # js  # laravel  # linux 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 《咸鱼之王》新版孙坚技能解析  我的世界官方网址入口 我的世界游戏主页直达入口  《新三国志曹操传》游历事件袁尚突围攻略  Golang如何使用crypto/md5生成哈希_Golang MD5哈希生成方法  荣耀盒子应用管理技巧  研招网官方网站正版登录网址_中国研究生招生信息网官网首页  mysql如何回滚事务_mysql ROLLBACK事务回滚方法  使用Google服务账号实现Google Drive API无缝集成与文件访问  Yandex无需登录畅游 俄罗斯搜索引擎最新官网指南  抖音官网入口快速访问 抖音网页版账号注册解析  键盘声音异常怎么回事_键盘异响怎么处理  《爱笔思画x》魔棒工具抠图教程  Lar*el Socialite单设备登录策略:实现用户唯一会话管理  《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊  抖音如何解除|直播|权限绑定_抖音关闭并解绑|直播|功能的方法  PDF文件去水印平台入口 PDF水印删除网址  电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】  顺丰快递单号查询寄件人 顺丰寄件人查询入口  《腾讯相册管家》注销账号方法  C++中std::thread和std::async的区别_C++并发编程与线程与异步任务比较  如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战  《oppo商城》维修服务位置  邦丰播放器频道搜索设置  如何自定义苹果手机铃声  快手网页版官方访问 快手网页版页面在线打开  C++如何实现单例模式_C++线程安全的单例模式写法  风车动漫官网首页入口登录 风车动漫在线观看正版地址  msn官方入口2025登录 msn官网2025直达首页入口  抖音视频如何添加标题?添加标题有哪些好处?  在PHP环境中正确加载HTML资源:CSS样式与图片路径指南  优化CSS动画与J*aScript定时器协同:构建稳定Toast提示  解决异步Python机器人中同步操作的阻塞问题  sublime如何自定义文件类型图标_AFileIcon插件的主题切换与个性化配置  管理打开的编辑器:固定、分组和关闭技巧  win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】  雨课堂官网在线登录 网页版雨课堂登录链接  《蓝色星原:旅谣》坐骑获取攻略  批改网官网首页登录 批改网学生用户登录入口  Flexbox布局实践:实现底部页脚与顶部粘性导航条的完美结合  怎么恢复删除的电脑文件_数据恢复软件使用教程  2025SNH48年度青春盛典门票价格及购买方式  Firefox OS应用开发:解决XMLHttpRequest跨域请求阻塞问题  疯狂小鸟微信小游戏入口 疯狂小鸟网页版秒玩  Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件  Teambition网盘如何共享文件  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  空腹吃苹果好吗 苹果空腹摄入指南  海棠阅读网页版_进入海棠网页版在线阅读中心  mysql如何配置从库只读_mysql从库只读设置方法  VS Code中的Tailwind CSS IntelliSense插件使用技巧 

 2025-12-20

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.