markocupic / composer-file-copier-plugin
在 'composer-install-cmd' 或 'composer-update-cmd' 时,从包的 dist 目录复制文件或镜像文件夹到文件系统。
0.2.1
2023-08-18 13:50 UTC
Requires
- php: ^8.1
- composer-plugin-api: ^2.1
- symfony/filesystem: ^5.0 || ^6.0 || ^7.0
- symfony/finder: ^5.0 || ^6.0 || ^7.0
Requires (Dev)
- composer/composer: ^2.0
README
Composer 文件复制插件
假设你已经开发了一个 composer 包。现在你希望在每次 post-install-cmd
和 post-update-cmd
事件后,将包内的选定文件复制到本地文件系统的指定位置。通过一点配置,这个 composer 插件 就可以为你完成这项工作。
配置在新建的 composer 包的 composer.json
文件的 extra 键中完成。
安装
composer require markocupic/composer-file-copier-plugin
构建你的 composer 包
<project_root>/
├── app/
├── public/
└── vendor/
└── code4nix/
└── super-package/
├── .github/
├── src/
├── tests/
├── data/
│ ├── foo.txt
│ ├── style.css
│ ├── config.yaml
│ └── test1/
│ ├── foo1.txt
│ ├── style1.css
│ ├── config1.yaml
│ └── test2/
│ ├── foo2.txt
│ ├── style2.css
│ └── config2.yaml
└── composer.json # configuration goes here!
非常感谢 https://tree.nathanfriend.io 分享这个花哨的树生成器。❤️
配置
配置在 composer package 内的 composer.json 文件的 extra key 中。
注意,源路径 总是相对于包的安装目录。
注意,目标路径 总是相对于项目根目录。
在你的包的 composer.json 中
{ "name": "code4nix/super-package", "type": "symfony-bundle", "require": { "php": "^8.1", "markocupic/composer-file-copier-plugin": "^0.1" }, "autoload": { "psr-4": { "code4nix\\SuperPackage\\": "src/" } }, "extra": { "composer-file-copier-plugin": [ { "source": "data/foo.txt", "target": "foo.txt" }, { "source": "data/foo.txt", "target": "foo.txt", "options": { "OVERRIDE": true } }, { "source": "data/test1", "target": "files/test1", "options": { "OVERRIDE": true, "DELETE": true } }, { "source": "data", "target": "files/data", "options": { "OVERRIDE": true }, "filter": { "NAME": [ "*.css", "*.yaml" ], "DEPTH": [ "> 1", "< 3" ] } } ] } }
选项
过滤器
附加配置
默认情况下,此包将不会处理以下包类型: library','metapackage','composer-plugin','project'
。
可以通过在 composer.json 中指定要排除的包来覆盖此设置
{ "extra": { "composer-file-copier-excluded": ["library", "metapackage", "composer-plugin"] } }
⚠️ 最后但同样重要的是!
请注意,这是一个非常 强大但也很危险的工具,如果应用不当,可能会 覆盖/删除文件/文件夹 并 破坏/损坏你的安装。