Skip to content
This repository has been archived by the owner on May 7, 2021. It is now read-only.

[READ-ONLY] Scope package in unique namespace to prevent composer install conflicts - with 1 click

License

Notifications You must be signed in to change notification settings

deprecated-packages/package-scoper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Package Scoper

Downloads total

  • Does your package require Symfony 5, but developers want to use it on Symfony 3?
  • Do you want to scope your package dependencies with unique namespace, but don't know how?
  • Do you want to skip learning of PhpScoper, PHAR packing, Box and GitHub Actions automated deploy?

You're in the right place!

Install

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

We also need symplify/monorepo-builder, so we can work with relative paths of local packages.

Usage

1. Generate php-scoper Config

php-scoper is a package that prefixes classes and functions, so they're unique and don't conflict with same-named class in a different version. You can read the documentation, or you can generate the config with sane defaults:

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

It will create scoper.inc.php right in the root of the package. That's the best location, because php-scoper works with path relative to its location.

2. Scope Composer Json

Scoping PHP code with php-scoper is just the first step. The second is making a composer.json with a different name than the original package. We got you covered! The following command will:

  • update package name to <original>-prefixed
  • keep PHP version in require section, license and bin files
  • drop the rest

It must be run on the scoped package composer.json, not the original one:

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. Generate GitHub Action Workflow

The process without automatization would not be much helpful. That's why we have GitHub Action to automate it.

vendor/bin/package-scoper generate-workflow

Go to your .github/workflows folder, update packages names manually and you're ready to go.

Convention over Configuration in GitHub Action

In the GitHub Workflow you only define package names. To make the whole process work, the <package-name> must be used in:

  1. directory name
/package/<package-name>
  1. binary file name:
/package/<package-name>/bin/<package-name>

As the file is defined in the composer.json:

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

About

[READ-ONLY] Scope package in unique namespace to prevent composer install conflicts - with 1 click

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages