Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/SanderSander/composer-link

Adds ability to link local packages for development with composer
https://github.com/SanderSander/composer-link

composer composer-plugin

Last synced: 24 days ago
JSON representation

Adds ability to link local packages for development with composer

Awesome Lists containing this project

README

        

# composer-link
![phpunit](https://github.com/SanderSander/composer-link/actions/workflows/unit-tests.yml/badge.svg?branch=master)
[![Test Coverage](https://api.codeclimate.com/v1/badges/3815e6abf2ec0e1d4ac8/test_coverage)](https://codeclimate.com/github/SanderSander/composer-link/test_coverage)
[![Maintainability](https://api.codeclimate.com/v1/badges/3815e6abf2ec0e1d4ac8/maintainability)](https://codeclimate.com/github/SanderSander/composer-link/maintainability)

Adds ability to link local packages in composer for development.

This plugin won't alter your `composer.json` or `composer.lock` file,
while maintaining the composer abilities to manage/upgrade your packages.

## Requirements

- PHP >= 8.0
- Composer >= 2.2

## Installation

This plugin can be installed globally or per project

Globally
```
composer global require sandersander/composer-link
```

Per project:
```
composer require --dev sandersander/composer-link
```

## Usage

The following three commands are made available by this plugin `link`, `unlink` and `linked`.
When the plugin is installed globally you can prefix the commands with `global` as example `composer global linked`
and install global packages.

To link a package you can use the `link` commands, you can also link a global package.
When linked to a global package absolute paths are used, when using a relative path composer-link resolves
it to the absolute path.

```
composer link ../path/to/package
composer global link ../path/to/package
```

It's also possible to use a wildcard in your path, note that this will install all packages found in the directory `../packages`
If you don't want to link all the packages but only the ones originally installed you can pass the `--only-installed` flag.

```
composer link ../packages/*
composer link ../packages/* --only-installed
```

To unlink the package you can use the `unlink` command
```
composer unlink ../path/to/package
composer unlink ../packages/*
composer global unlink ../path/to/package
```

To see all linked packages in your project you can use the `linked` command
```
composer linked
composer global linked
```