PHPackages                             craychee/rootcanal - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. craychee/rootcanal

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

craychee/rootcanal
==================

Workflow manager to build a Drupal7 root with composer

v1.0.0(10y ago)16.0k4[1 issues](https://github.com/craychee/rootcanal/issues)[2 PRs](https://github.com/craychee/rootcanal/pulls)PHP

Since Jun 17Pushed 10y ago1 watchersCompare

[ Source](https://github.com/craychee/rootcanal)[ Packagist](https://packagist.org/packages/craychee/rootcanal)[ RSS](/packages/craychee-rootcanal/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (6)Versions (5)Used By (0)

Drupal RootCanal
================

[](#drupal-rootcanal)

[![Build Status](https://camo.githubusercontent.com/0e9f3ed088fa74c45e8fa0c1354661d6d8dadb614d72f24c0c59c0010d03f667/68747470733a2f2f7472617669732d63692e6f72672f63726179636865652f726f6f7463616e616c2e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/craychee/rootcanal)

This library canals a composer vendor directory and a project's custom files and directories into a Drupal(7) webroot. The webroot is assembled either by symlinking custom directories and contrib modules into the Drupal root (recommended for development) or copying all files into the webroot and removing specified files and directories (recommended for production).

\##Usage

The drupal:canal command specifications:

```
bin/rootcanal

```

Will run generate a drupal root directory inside a `www` directory using your composer installation and custom files and directories that are in your project's root.

You can override the default name of the destination path with:

```
bin/rootcanal --destination=docroot

```

You can override the default source path of your custom directories and files with:

```
bin/rootcanal --source=my_custom_dir

```

By default, modules, themes, and custom directories will be symlinked into a Drupal root. You can instead copy all files and directories with:

```
bin/rootcanal --prod

```

\##Libraries Currently, this solution does not elegantly accommodate libraries. You can see an example of how to work around this [here](https://gist.github.com/craychee/950136f52edefab3f839). The next release, currently in dev, will resolve this by allowing for configuration, such as libraries, to be passed in with a yml config file.

\##Credits This library is a reworking of [drupal/tangler](https://github.com/winmillwill/drupal-tangler) to accommodate the abstraction of configuration, the ability to generate a production artifact, and to make it more testable. All glory belongs to [winmillwill](https://github.com/winmillwill).

###  Health Score

28

—

LowBetter than 52% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 88.9% 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 ~39 days

Total

3

Last Release

3955d ago

Major Versions

v0.1.1 → v1.0.02015-09-04

### Community

Maintainers

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

---

Top Contributors

[![craychee](https://avatars.githubusercontent.com/u/1851632?v=4)](https://github.com/craychee "craychee (8 commits)")[![mathewpeterson](https://avatars.githubusercontent.com/u/203190?v=4)](https://github.com/mathewpeterson "mathewpeterson (1 commits)")

###  Code Quality

TestsBehat

### Embed Badge

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

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

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[composer/composer

Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.

29.5k196.2M3.1k](/packages/composer-composer)[friendsofphp/php-cs-fixer

A tool to automatically fix PHP code style

13.5k251.2M25.2k](/packages/friendsofphp-php-cs-fixer)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M574](/packages/shopware-core)[jolicode/castor

A lightweight and modern task runner. Automate everything. In PHP.

54743.1k4](/packages/jolicode-castor)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)

PHPackages © 2026

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