PHPackages                             kraftwagen/kraftwagen - 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. kraftwagen/kraftwagen

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

kraftwagen/kraftwagen
=====================

Drush commands to manage a install profile based Drupal development workflow

551720[15 issues](https://github.com/kraftwagen/kraftwagen/issues)[3 PRs](https://github.com/kraftwagen/kraftwagen/pulls)PHP

Since Aug 17Pushed 8y ago8 watchersCompare

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

READMEChangelogDependenciesVersions (1)Used By (0)

Kraftwagen
==========

[](#kraftwagen)

Kraftwagen is Drush extensions that provides a set of comands to support a *everything in code* and *install profile*/`drush make` based Drupal development workflow.

Directory structure
-------------------

[](#directory-structure)

- `build`: Directory that contains the working Drupal installation or a symlink to the working Drupal installation, in a subdir of `builds`.
- `builds`: Optional directory in which multiple builds can be stored.
- `cnf`: Contains settings, the Drupal upload directory and the environment file. The settings and files directory will be symlinked into the `build`.
- `src`: The actual source of the project, which is a Drupal install profile.
- `tools`: Optional directory in which you can have a Drush and Kraftwagen per project. You can setup this directory using our [tools repository](https://github.com/kraftwagen/tools).

Available commands
------------------

[](#available-commands)

Kraftwagen provides a set of commands. Some of these commands are public, and some are hidden. All of the hidden commands are called by public commands. The hidden commands are there to allow Kraftwagen to work with automated deployment tools like [Capistrano](http://capistranorb.com/).

- `drush kw-new-project`: Creates a `src` directory in which the source of a the new project is placed, based on a provided skeleton Git repository. Although it is easily possible to create a new project from scratch without using this command, this will get you up to speed more quickly and allows for a company-wide standard on how Drupal projects are constructed (like modules that always should be enabled or desired default configuration). We provide a [skeleton example](https://github.com/kraftwagen/skeleton) that you can fork or copy for your own work.
- `drush kw-setup`: Creates a `cnf` directory in which a few files and a directory are created. The directory is called `files` and is intended to become the directory in which the user uploaded files in Drupal are stored. The files are called `environment`, `settings.php` and `settings.local.php`. The `environment` file contains the type of enviroment, like 'production' (which is the default), 'staging', 'testing' or 'development'. The `settings.php` and `settings.local.php` files are copied from the `src/cnf`directory. `settings.php` should include `settings.local.php` (in our skeleton example this is setup correctly), so all global settings can be in `settings.php` and settings that differ per deployment, like database credentials, can be in `settings.local.php`.
- `drush kw-update-makefile`: Usually, updating Drupal installations to new versions can be real pain the bottom. With Kraftwagen, all core and contrib projects are saved by just the version number. Everything else will be downloaded when building. This make updating already a breeze, because it will be as simple as updating the number in your `.make` file and rebuilding. It can be even more easy. This command accepts the location of a `.make` file and will automatically update all version numbers for you. *It is recommended to keep the file in version control, because this command will change the file, so you want a rollback.*
- `drush kw-build`: This command creates a `build` directory that contains a runnable Drupal installation. It will use `src/tools/build.make.tpl` to construct a make file and then will feed that file to `drush make` to create the installation. When `drush make` is finished, it will symlink the `cnf/files` directory and the `cnf/settings.php` and `cnf/settings.local.php`into `build/sites/default`. If you created a `builds` directory, it will not create the build in `build`. It will instead create the build in datestamped subdirectory of `builds` and make `build` a symlink to this subdirectory.
- `drush kw-init-database`: This command is fairly simple wrapper around `drush site-install`. The wrapper is just that it will automatically find out the name of the install profile that should be used. It can only be ran in the build.
- `drush kw-update`: This command makes sure all modules that should be enabled, are enabled, and that modules that should be disable, are disable. Then it runs all pending database updates for modules (`drush updatedb`). It's third step is reverting all features (`drush features-revert-all`) and at last it will run all [Kraftwagen Manifests](https://github.com/kraftwagen/kw-manifests). This command can only be ran in the build.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance15

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 85.7% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/692b75a6dde1f076e7248f8f35cda5d6b68d993046ac0a08158d49b72b71ba38?d=identicon)[rolfvandekrol](/maintainers/rolfvandekrol)

---

Top Contributors

[![rolfvandekrol](https://avatars.githubusercontent.com/u/434397?v=4)](https://github.com/rolfvandekrol "rolfvandekrol (60 commits)")[![FransvanderMeer](https://avatars.githubusercontent.com/u/4189592?v=4)](https://github.com/FransvanderMeer "FransvanderMeer (3 commits)")[![rubenOF](https://avatars.githubusercontent.com/u/3328583?v=4)](https://github.com/rubenOF "rubenOF (3 commits)")[![fjmk](https://avatars.githubusercontent.com/u/198328?v=4)](https://github.com/fjmk "fjmk (2 commits)")[![matglas](https://avatars.githubusercontent.com/u/572208?v=4)](https://github.com/matglas "matglas (2 commits)")

### Embed Badge

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

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

###  Alternatives

[wp-cli/wp-cli

WP-CLI framework

5.0k17.2M320](/packages/wp-cli-wp-cli)[consolidation/annotated-command

Initialize Symfony Console commands from annotated command class methods.

22569.8M19](/packages/consolidation-annotated-command)[chi-teck/drupal-code-generator

Drupal code generator

26947.8M5](/packages/chi-teck-drupal-code-generator)[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)[php-tui/php-tui

Comprehensive TUI library heavily influenced by Ratatui

589747.0k6](/packages/php-tui-php-tui)

PHPackages © 2026

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