markocupic/composer-file-copier-plugin

在 'composer-install-cmd' 或 'composer-update-cmd' 时,从包的 dist 目录复制文件或镜像文件夹到文件系统。

0.2.1 2023-08-18 13:50 UTC

This package is auto-updated.

Last update: 2024-09-18 16:16:49 UTC


README

Logo

Composer 文件复制插件

假设你已经开发了一个 composer 包。现在你希望在每次 post-install-cmdpost-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"]
    }
}

⚠️ 最后但同样重要的是!

请注意,这是一个非常 强大但也很危险的工具,如果应用不当,可能会 覆盖/删除文件/文件夹破坏/损坏你的安装