symplify/package-scoper

此包已被弃用,不再维护。作者建议使用humbug/php-scoper包。

通过1个点击将包作用域设置在唯一命名空间中,以防止composer安装冲突


README

Downloads total

  • 你的包需要Symfony 5,但开发者在使用Symfony 3吗?
  • 你想将包依赖作用域设置在唯一命名空间中,但不知道如何操作?
  • 你想跳过学习PhpScoper、PHAR打包、Box和GitHub Actions自动化部署吗?

你来到了正确的位置!

安装

composer require symplify/package-scoper symplify/monorepo-builder --dev

我们还需要symplify/monorepo-builder,这样我们就可以使用本地包的相对路径。

使用

1. 生成php-scoper配置

php-scoper是一个包,它会给类和函数添加前缀,使它们唯一,避免与不同版本中同名类冲突。您可以阅读文档,或者使用合理的默认值生成配置

vendor/bin/package-scoper generate-php-scoper

它将在包的根目录下创建scoper.inc.php。这是最佳位置,因为php-scoper与相对于其位置的路径一起工作。

2. 作用域Composer Json

使用php-scoper对PHP代码进行作用域仅仅是第一步。第二步是创建一个具有不同于原始包名称的composer.json。我们已经为您准备好了!以下命令将

  • 更新包名为<original>-prefixed
  • 保留require部分中的PHP版本、许可证和bin文件
  • 删除其余部分

必须在作用域包的composer.json上运行,而不是原始的

vendor/bin/package-scoper scope-composer-json <path-to-composer-json>

vendor/bin/package-scoper scope-composer-json packages-scoped/some-package/composer.json

3. 生成GitHub Action工作流程

如果没有自动化,这个过程将不会有太大帮助。这就是为什么我们有GitHub Action来自动化它。

vendor/bin/package-scoper generate-workflow

前往您的.github/workflows文件夹,手动更新包名,然后就可以开始了。

GitHub Action中的约定优于配置

在GitHub工作流程中,您只需定义包名。为了使整个过程生效,必须在以下位置使用<package-name>

  1. 目录名
/package/<package-name>
  1. 二进制文件名
/package/<package-name>/bin/<package-name>

因为文件是在composer.json中定义的

{
    "bin": [
        "bin/<package-name>"
    ]
}