You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何排除Composer包内指定文件?用composer.json还是GitHub Action?

排除Composer包文件的两种实用方案

一、直接用composer.json配置排除(优先选这个)

Composer本身支持在composer.json里通过exclude字段指定不需要随包分发的文件/目录,这是最省心的方式,不用额外折腾CI流程。

配置示例直接抄就行:

{
  "name": "你的厂商名/你的包名",
  "exclude": [
    "tests/",
    "docs/",
    ".github/",
    "phpunit.xml.dist",
    "开发用的说明文档.md"
  ]
}
  • 这个字段只影响Composer打包发布的内容,仓库里的文件不会被删除,本地开发时该用照样用。
  • 适合排除测试文件、文档、CI配置、开发辅助文件这类没必要给用户的内容。

二、用GitHub Action做预处理(复杂需求才用)

如果你的排除需求比较特殊,比如要根据条件删文件、改完内容再发布,才需要用GitHub Action做预处理。比如:

  • 要删掉特定环境的配置文件
  • 要压缩静态资源后再发
  • 要清理带敏感信息的临时文件

给个简单的Action示例(发布前删指定文件):

name: 发布到Packagist
on:
  release:
    types: [published]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 删除不需要的文件
        run: |
          rm -rf tests/
          rm -f .env.example
      - name: 更新Packagist
        uses: php-actions/composer@v6
        with:
          command: publish
          args: --no-interaction
  • 这种方式只会在CI环境里临时删文件,不会动GitHub仓库里的原始文件,只影响提交给Packagist的内容。
  • 适合那些exclude字段搞不定的复杂场景。

总结下

能靠composer.json的exclude解决的就优先用,简单高效;只有遇到动态处理之类的复杂需求,再考虑上GitHub Action。

内容的提问来源于stack exchange,提问作者112Legion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:15:46