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"]
}
}
⚠️ 最后但同样重要的是!
请注意,这是一个非常 强大但也很危险的工具,如果应用不当,可能会 覆盖/删除文件/文件夹 并 破坏/损坏你的安装。
