Review: Forge, a Tool for Bootstrapping a WordPress Theme

Forge is a free command-line toolkit for bootstrapping and developing WordPress themes in a tidy environment using front-end languages like Sass, LESS, and CoffeeScript.

During the early development process of this year’s default theme for WordPress, the Twenty Twelve team—Drew Strojny and myself—used Github and Forge to build the theme (view the archived source).

I would like to share my thoughts on using Forge during this process now that the theme is back in the core WordPress environment: Subversion and Trac.

In summary: Forge is too restrictive for general theme develpoment.

This rapid theme development tool is much too rigid for my taste, as it requires themes to be developed the way that The Theme Foundry thinks is best—I’ve found that their exact methods don’t match with how core WordPress expects default themes to be formatted.

Biggest offenders directory naming and the exact CSS output. If it were a bit more configurable I’d consider it again in the future.

The restrictions things that stand out to me are as follows.

1. Can’t add add ad-hoc directories like /languages or /js

Andy Adams, the primary developer behind Forge says: “The only place to add new directories is within the /includes/ folder. Right now, there is no way to add any new root directories.”

2. Can’t rename the output directory names. In core we’d prefer to use /js instead of /javascripts, for example.

3. Can’t force the build to output an empty /images directory. There are times you’d like to commit an empty directory, either for future development or to show another theme developer how something could be used. Forge doesn’t build empty directories.

4. Can’t tell build to ignore something. With Twenty Twelve, for example, the /includes had some dev tools that Drew wanted for debugging, but I don’t want to see them after a build.

5. Not enough control over the SASS to CSS process.

Drew and Andy both said to look at Compass documentation, but after a few hours digging around I couldn’t figure this out. I’d like to take the output from the .scss files and make it match the WP coding standards. For example, tabs instead of spaces and more control over the spacing of closing braces.

Overall, I didn’t find that using Forge sped up development, it instead added overhead because of the renaming tasks after merging back to the canonical core theme code, adding empty directories back in, and the CSS cleanup steps needed.

In my experience, the fastest theme development comes with using a great starting theme like _s rather than a theme compiler tool.

On that note—check out Underscores.me—we have a tool there for quickly bootstrapping _s for your next theme project. It handles the renaming steps to get you going, then leaves the rest to you to code as you wish, forging ahead with no restrictions.

I think Forge is meant to serve a different purpose than you were using it for. Trying to map Forge output into a pre-existing layout is not really using Forge for its strengths. Forge removes those decisions for you, so you can focus on using Sass and LESS (which we think are massive productivity boosters).

If directory naming and CSS formatting are an important part of your project, Forge is probably not the best tool. But if using CSS preprocessing is something you find valuable, I don’t know of an easier way to build a theme than with Forge.