PHPackages                             dandelion/dandelion - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. dandelion/dandelion

ActiveLibrary

dandelion/dandelion
===================

2.1.0(4y ago)40MITPHPPHP &gt;=7.3

Since May 11Pushed 4y ago1 watchersCompare

[ Source](https://github.com/dandelionphp/dandelion)[ Packagist](https://packagist.org/packages/dandelion/dandelion)[ RSS](/packages/dandelion-dandelion/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (6)Dependencies (20)Versions (8)Used By (0)

Dandelion - A tool for managing PHP projects with multiple packages.
====================================================================

[](#dandelion---a-tool-for-managing-php-projects-with-multiple-packages)

[![Travis Build](https://camo.githubusercontent.com/5df766af6767159e48dc22774c4f1b8a319f750a4e1cf1ea33ae5ec4f10061d7/68747470733a2f2f7472617669732d63692e6f72672f64616e64656c696f6e7068702f64616e64656c696f6e2e7376673f6272616e63683d6d61737465722c)](https://camo.githubusercontent.com/5df766af6767159e48dc22774c4f1b8a319f750a4e1cf1ea33ae5ec4f10061d7/68747470733a2f2f7472617669732d63692e6f72672f64616e64656c696f6e7068702f64616e64656c696f6e2e7376673f6272616e63683d6d61737465722c)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/e554830dfd7db383e6eea4c619c14d3d71cad84afc339fa154a8d557033464f4/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f64616e64656c696f6e7068702f64616e64656c696f6e2f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/dandelionphp/dandelion/?branch=master)

Getting started
---------------

[](#getting-started)

Set up a repository which includes all your packages source code and the dandelion configuration file.

Example structure:

```
.
+-- dandelion.json
+-- Package1
|   +-- ...
+-- Package2
|   +-- ...
+-- tmp

```

Next you want to create read-only repositories for your packages in order to split and release into those repositories. The read-only repositories will be the one you link to in your dandelion configuration file.

Create a temp folder in your repository root where the split repositories will be located. You can set this directory to any path you like in the configuration file.

Usage
-----

[](#usage)

The recommended way is to use docker. The docker image comes with a self-contained splitsh binary, you don't need to download or compile it yourself. If you choose one of the other options to run Dandelion, please have a look at the section [Install splitsh](https://github.com/dandelionphp/dandelion/tree/feature/add-lock#install-splitsh).

Choose your favorite method below.

### Workflow example

[](#workflow-example)

1. Commit and push changes to your monorepo
2. Use split all to push all changes to read-only repositories
3. Use release all to create new releases for your packages

### Available commands

[](#available-commands)

- `dandelion split:all` -&gt; splits all packages listed in your configuration
- `dandelion split $PACKAGE_NAME` -&gt; split out a specific package
- `dandelion release:all` -&gt; release all packages listed in your configuration
- `dandelion release $PACKAGE_NAME` -&gt; release a specific package

### Docker

[](#docker)

`docker run --rm -v $PWD:/home/dandelion dandelion:latest -c "$COMMAND"`

When you choose Docker as preferred way, you will need to use a Git authentication flow that runs without user interaction. If that is not a viable option for you but you still want to use Docker, you can configure your own Docker image using a keypair authentication flow.

### PHAR

[](#phar)

Download the latest release from the [Github](https://github.com/dandelionphp/dandelion/releases).

`php dandelion.phar $COMMAND`

### composer

[](#composer)

#### Global Installation

[](#global-installation)

`composer global require dandelionphp/dandelion`

Make sure to add composer to your PATH:
**macOS:** $HOME/.composer/vendor/bin
**GNU / Linux Distributions:** $HOME/.config/composer/vendor/bin or $HOME/.composer/vendor/bin

`dandelion $COMMAND`

#### Local Installation

[](#local-installation)

`composer require --dev dandelionphp/dandelion`

`vendor/bin/dandelion $COMMAND`

### Install splitsh

[](#install-splitsh)

Currently splitsh-lite is available for MacOS and Linux. If you need a different version you have to compile it from source. In case you need to compile an alpine version, you might want to take a look at the [dockerfile](https://github.com/dandelionphp/dandelion/blob/master/Dockerfile), which does exatly that in the fist stage.

Download the binary from [Github](https://github.com/splitsh/lite/releases) and place it in `/usr/local/bin` or wherever you like. If you choose a different location keep in mind to set the path in the configuration file.

Configuration
-------------

[](#configuration)

You can download an example configuration [here](https://raw.githubusercontent.com/dandelionphp/dandelion-example/master/dandelion-example.json).

### Properties

[](#properties)

**repositories***(type:Object)*:
Contains all information about your repositories. Repository name can be anything.

**url***(type:String)*:
Url to read-only repository.

**path***(type:String)*:
Name of your local package.

**version***(type:String)*:
Package version to release.

**pathToTempDirectory***(type:String)*:
Can be any writeable path and is used to create releases of your packages.
**pathToSplitshLite***(type:String)*:
Path to splitsh library, default is /usr/local/bin/split-slite, see install splitsh for more information.

### Example Config

[](#example-config)

```
{
  "repositories": {
    "dandelion-example-1": {
      "url": "https://@github.com//.git",
      "path": "example-1/",
      "version": "1.1.0"
    },
    "dandelion-example-2": {
      "url": "https://@github.com//.git",
      "path": "example-2/",
      "version": "1.0.0"
    }
  },
  "pathToTempDirectory": "/tmp/",
  "pathToSplitshLite": "/usr/bin/splitsh-lite"
}
```

*Note: It is important to use trailing slashes on path references*

### Git Authentication

[](#git-authentication)

#### Github

[](#github)

If you choose to use the token based authentication, keep in mind that your token will be visible in plain text in your dandelion config as well as in `.git/config`. You'll find more information about that auth style [here](https://github.blog/2012-09-21-easier-builds-and-deployments-using-git-over-https-and-oauth/). Go to your [Github](https://github.com/settings/tokens) settings and create a personal access token. The scope for the access token is `repo`.

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 72% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~128 days

Recently: every ~112 days

Total

6

Last Release

1554d ago

Major Versions

1.1.1 → 2.0.02021-03-04

### Community

Maintainers

![](https://www.gravatar.com/avatar/1c8ae669ad5d4e25d1564b2ee381e86fb88b3d9f132040a1a6b642de43b7a417?d=identicon)[daniel-rose](/maintainers/daniel-rose)

![](https://www.gravatar.com/avatar/f2b758f0afbac55036ef37f46e4d2e4369a0286c0f8085ca4950208654e556a4?d=identicon)[srccb](/maintainers/srccb)

---

Top Contributors

[![daniel-rose](https://avatars.githubusercontent.com/u/489806?v=4)](https://github.com/daniel-rose "daniel-rose (18 commits)")[![sourcecube](https://avatars.githubusercontent.com/u/3285018?v=4)](https://github.com/sourcecube "sourcecube (7 commits)")

---

Tags

monorepo

###  Code Quality

TestsCodeception

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/dandelion-dandelion/health.svg)

```
[![Health](https://phpackages.com/badges/dandelion-dandelion/health.svg)](https://phpackages.com/packages/dandelion-dandelion)
```

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[craftcms/cms

Craft CMS

3.6k3.6M2.6k](/packages/craftcms-cms)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
