PHPackages                             eaudeweb/heavy-lifter - 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. [CLI &amp; Console](/categories/cli)
4. /
5. eaudeweb/heavy-lifter

ActiveLibrary[CLI &amp; Console](/categories/cli)

eaudeweb/heavy-lifter
=====================

Common commands for your Drupal project to get you up to speed

1.4.6(1y ago)251.2k↑11%3[6 issues](https://github.com/eaudeweb/heavy-lifter/issues)3Apache-2.0PHPPHP &gt;=5.6.0CI failing

Since Nov 15Pushed 3mo ago12 watchersCompare

[ Source](https://github.com/eaudeweb/heavy-lifter)[ Packagist](https://packagist.org/packages/eaudeweb/heavy-lifter)[ RSS](/packages/eaudeweb-heavy-lifter/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (74)Used By (3)

Heavy-lifter
============

[](#heavy-lifter)

Doing the heavy lifting for local Drupal development.

Installation
------------

[](#installation)

### Drupal 8

[](#drupal-8)

- Install the heavy-lifter with composer : `composer require eaudeweb/heavy-lifter`
- Execute the configuration script for heavy-lifter : `./vendor/bin/robo site:config`
- Copy `example.robo.yml` to `robo.yml`, customize the username and password to the ones provided by system administrator
- (Optional) You can add excluded drush commands to any of heavy-lifter's robo commands in `robo.yml`

Example :

```
site:
    update:
         excluded_commands:
           - locale:check
           - yyy

```

- (Optional) You can add extra drush commands to any of heavy-lifter's robo commands in `robo.yml`

Example:

```
site:
    update:
         extra_commands:
           - locale:update

```

- Execute `./vendor/bin/robo sql:sync` to see if the installation successfully worked

### Drupal 7

[](#drupal-7)

The installation guideline on Drupal 7 is the same as the one on Drupal 8, just a few observations are necessary:

- Not all the available robo commands are available for Drupal 7 websites. (Some commands commit modifications available only to Drupal 8 websites and therefore have not been implemented/tested on Drupal 7)

How to use it inside a project
------------------------------

[](#how-to-use-it-inside-a-project)

Note: You run all commands from the project's root folder (i.e. where you store the `web/` folder).

- Copy `example.robo.yml` to `robo.yml` and customize the username and password to the ones provided by system administrator
- Get the database dump and import: `./vendor/bin/robo sql:sync`
- Update the site's configuration and database : `./vendor/bin/robo site:update`
- Get the files archive: `./vendor/bin/robo files:sync`
- Create archive with files directory to the given path : `/vendor/bin/robo files:dump [destination]`
- Enable development: `./vendor/bin/robo site:develop`
- Download the database dump from the remote storage, without importing it : `/vendor/bin/robo sql:download [destination]`

Custom development scripts
--------------------------

[](#custom-development-scripts)

If you want to run custom drush scripts at the end of the site:develop command, add these scripts in the PROJECT/etc/scripts/develop folder.

Database anonymize
------------------

[](#database-anonymize)

1. Run `composer require eaudeweb/gdpr-dump`
2. Define your anonymize schema in an anonymize.schema.yml file, in the project root (in the same folder as robo.yml)
3. Run `./vendor/bin/robo sql:dump --anonymize`

Row values listed under **ignored\_values** will not be anonymized.

### anonymize.schema.yml example

[](#anonymizeschemayml-example)

```
users_field_data:
  name:
    formatter: email
    exclude: # the rows that have these values will NOT be anonymized
      uid: [1, 76, 228, 81, 116, 117, 149, 393]
  telephone:
    formatter: phoneNumber
  mail:
    formatter: email
    unique: true
    exclude:
      uid: [1, 76, 228, 81, 116, 117, 149, 393]
    conditions_action: ignore
  pass:
    formatter: password
  preferred_admin_langcode:
    formatter: clear
table2:
  column1:
    formatter: randomText
    include: # only the rows that have these values will be anonymized
      name: ['Name to anonymize']
  rand_num
    formatter: randomNumber
    arguments: [6] # argument passed to the randomNumber() function from the Faker library, max 6 digits
taxonomy_term_field_revision:
  name:
    formatter: company
    include: # you can also use SELECT queries to define your list of included rows. The select query MUST only select ONE column
      tid: SELECT tid FROM taxonomy_term_field_data WHERE vid = "partners"
...

```

### Formatter types

[](#formatter-types)

- name - generates a name
- phoneNumber - generates a phone number
- username - generates a random user name
- password - generates a random password
- email - generates a random email address
- date - generates a date
- longText - generates a sentence
- number - generates a number
- randomText - generates a sentence
- text - generates a paragraph
- uri - generates a URI
- clear - generates an empty string

For more information about available formatters, check

### Observations for Windows environment:

[](#observations-for-windows-environment)

- only command `sql:dump` is available
- robo path is `./vendor/consolidation/robo/robo`

### Multisite

[](#multisite)

For multisites, create another key under `sites` in `robo.yml` and configure it similar to `sites:default`.

To run a command on a sub site, use the `--site SITE` argument.

Example:

robo.yml:

```
sites:
  default:
    ...
  subsite:
    ...

```

`./vendor/bin/robo sql:sync --site subsite`

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance40

Moderate activity, may be stable

Popularity34

Limited adoption so far

Community23

Small or concentrated contributor base

Maturity71

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~50 days

Recently: every ~107 days

Total

53

Last Release

118d ago

Major Versions

1.4.1 → 2.0.0-alpha12021-01-01

1.4.2 → 2.0.0-alpha22022-01-27

1.4.5 → 2.0.0-alpha32023-03-13

1.4.6 → 2.0.0-alpha52024-11-04

PHP version history (2 changes)1.0.2PHP &gt;=5.6.0

2.0.0-alpha1PHP &gt;=7.3

### Community

Maintainers

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

---

Top Contributors

[![stefanbutura](https://avatars.githubusercontent.com/u/26040792?v=4)](https://github.com/stefanbutura "stefanbutura (44 commits)")[![cristiroma](https://avatars.githubusercontent.com/u/634661?v=4)](https://github.com/cristiroma "cristiroma (33 commits)")[![calimanleontin](https://avatars.githubusercontent.com/u/12694495?v=4)](https://github.com/calimanleontin "calimanleontin (24 commits)")[![Kopezaur](https://avatars.githubusercontent.com/u/34744078?v=4)](https://github.com/Kopezaur "Kopezaur (21 commits)")[![Anthelixes](https://avatars.githubusercontent.com/u/7890075?v=4)](https://github.com/Anthelixes "Anthelixes (8 commits)")[![tavib47](https://avatars.githubusercontent.com/u/11833801?v=4)](https://github.com/tavib47 "tavib47 (1 commits)")

---

Tags

drupal

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/eaudeweb-heavy-lifter/health.svg)

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

###  Alternatives

[wp-cli/wp-cli

WP-CLI framework

5.1k17.2M320](/packages/wp-cli-wp-cli)[mglaman/drupal-check

CLI tool for running checks on a Drupal code base

3426.6M42](/packages/mglaman-drupal-check)[consolidation/annotated-command

Initialize Symfony Console commands from annotated command class methods.

22569.8M19](/packages/consolidation-annotated-command)[drupal/console-core

Drupal Console Core

13514.7M12](/packages/drupal-console-core)[seld/cli-prompt

Allows you to prompt for user input on the command line, and optionally hide the characters they type

24725.8M17](/packages/seld-cli-prompt)[illuminate/console

The Illuminate Console package.

12944.1M5.1k](/packages/illuminate-console)

PHPackages © 2026

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