liborm85 / composer-vendor-cleaner
Composer Vendor Cleaner 从 vendor 目录中移除不必要的开发文件和目录。
1.7.1
2023-06-02 14:36 UTC
Requires
- php: >=5.6.0
- composer-plugin-api: ^1.1 || ^2.0
- ext-json: *
Requires (Dev)
- composer/composer: ^1.10.23 || ^2.1.9
- phpunit/phpunit: ^5.7 || ^6.5 || ^7.5 || ^8.4 || ^9.1
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