liborm85/composer-vendor-cleaner

Composer Vendor Cleaner 从 vendor 目录中移除不必要的开发文件和目录。

安装量: 103,392

依赖者: 0

建议者: 0

安全性: 0

星标: 27

关注者: 4

分支: 3

开放问题: 0

类型:composer-plugin

1.7.1 2023-06-02 14:36 UTC

This package is auto-updated.

Last update: 2024-09-10 16:12:15 UTC


README

此 composer 插件从 vendor 目录中移除不必要的开发文件和目录。

安装

本地安装到项目中

composer require liborm85/composer-vendor-cleaner

全局安装

composer global require liborm85/composer-vendor-cleaner

要求

  • PHP 5.6.0+

配置

要移除的开发文件和目录可以在 composer.json 文件中的 extra 数据属性中通过新的键 dev-files 定义。完全支持通配符语法。

示例

"extra": {
    "dev-files": {
        "/": [                  // means: find in all library packages directories and bin directory
            "tests/",           // means: tests directory whatever
            "docs/",
            ".travis.yml"       // means: .travis.yml file whatever
        ],
        "*/*": [                // means: find in all library packages directories, but NOT in bin directory
            "*.sh"
        ],
        "bin": [                // means: find in composer bin directory
            "*.bat"
        ],
        "twig/twig": [          // means: find only in twig/twig package directory
            "doc/",
            "/drupal_test.sh"   // means: only file in root directory of twig/twig package
        ],
        "symfony/*": [          // means: find in all symfony packages
            "Tests/"
        ],
        "other/package": [
            "/src/**/*.md"      // means: find whatever all md files in src directory, eg.: /src/dir1/test.md, /src/dir1/dir2/readme.md
        ],
        "example/package": [    // means: remove all files and directories in language directory without cs.php file
            "languages/*",
            "!languages/cs.php" // means: exclude cs.php file from remove
        ]
    }
}

开发文件和目录也可以在外部 json 文件中定义,通过在根 composer.json 中的 dev-files 键中指定到此文件的相对路径。格式与上述相同。

"extra": {
    "dev-files": "composer.dev-files.json"
}

composer.dev-files.json 文件示例

{
  "/": [
    ".github/"
  ],
  "twig/twig": [
    "doc/"
  ]
}

可以使用 config 属性进行附加配置。

  • match-case (默认: true) - 匹配文件和目录的名称大小写。
  • remove-empty-dirs (默认: true) - 移除空目录。
  • no-dev-only (默认: false) - 如果设置为 true,则仅在运行 composer 命令时使用 --no-dev 参数时开始清理。

示例

"config": {
    "dev-files": {
        "match-case": false,
        "remove-empty-dirs": false
    }
}

为什么需要一个新插件?

一些 composer 包包含不属于生产服务器的文件和目录,但 composer 并不能解决这个问题。

存在许多试图解决这个问题的问题的 composer 插件,它们没有高级的过滤模式,或者它们不可由用户自定义。或者有些没有配置,自动删除几乎所有内容,然后包就不能工作了。

这就是为什么我创建了一个新的插件,它允许通过 glob 模式进行高级过滤。

如果您缺少功能或发现错误,请创建一个 问题

许可证

MIT