# create-guten-block: zero configuration scaffolding for WordPress block plugins

> create-guten-block generated a complete Gutenberg block plugin project, with webpack, Babel and ESLint already wired together, in a single npx command. The project is now archived and points new work at the official @wordpress/create-block package.

**ahmadawais/create-guten-block** —  📦    A zero-configuration #0CJS developer toolkit for building WordPress Gutenberg block plugins.

- Repository: https://github.com/ahmadawais/create-guten-block
- Website: https://Awais.dev/cgb-post
- Stars: 769 · Forks: 88
- Language: JavaScript
- License: MIT
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/ahmadawais-create-guten-block

## One command replaces the whole build toolchain decision

Building a WordPress Gutenberg block from scratch means choosing a React setup, a bundler, a transpiler, a linter and a CSS pipeline before you write a line of block code. create-guten-block, described in its README as a zero configuration dev toolkit for that job, made all of those choices for you. The README is explicit about what it covers: React, webpack, ES6/7/8/Next, ESLint and Babel are handled, and you get a plugin you can activate in the WordPress admin. The stated design goal was a developer's toolbox rather than a one-off starter kit, with versioned releases, updates that do not require code changes, a set of sane defaults, and a single runtime dependency named cgb-scripts. That last point is the one that matters most in practice. The generated project does not pull a sprawling dependency tree into your WordPress plugin directory. It puts the toolchain in one place, which is why the toolkit was pleasant to use and why the generated plugin stays small. The prerequisites are modest, with Node >= 8 and npm >= 5.3 needed on the development machine but not on the server, and the README suggests nvm for switching Node versions between projects. Checking the local setup takes two commands:

```bash
node -v
npm -v
```

## What the generator leaves in your plugins folder

The README shows the tree the generator produces, and it is worth reading closely because it defines the shape of the plugin you then own. At the top level of the generated directory you get a .gitignore, a plugin.php, a package.json, a readme.md and a dist directory. The dist directory holds the built output: blocks.build.js, blocks.editor.build.css and blocks.style.build.css. The src directory holds the authoring files, with a block folder containing block.js, editor.scss and style.scss, plus blocks.js, common.scss and init.php at that level. The split is conventional for block plugins: PHP registers the block and enqueues the built assets from dist, while src carries the JavaScript and styles that the bundler compiles into them. The README stresses there is no configuration and no complicated folder structure, just the files needed to build the app. Once generated, that tree is ordinary source code that you can restructure, which is also what makes the eject command exist.

## npm start, npm run build, and the one-way eject

The workflow is three scripts and nothing else, and the README's quick overview runs the first two steps together:

```bash
npx create-guten-block my-block
cd my-block
npm start
```

That is the whole setup. The generator has to be run inside the plugins folder of a local WordPress install, because it produces a plugin you then activate in WP Admin. The individual commands are npm start, which compiles and runs the block in development mode, watches for changes and reports errors back in the console; npm run build, which produces the production code in the dist folder, runs once, and reports the gzip file sizes of what it produced; and npm run eject, which takes the plugin out of the toolkit entirely and hands you all the configuration files so you can customise the project as you want, which the README calls a one-way street. That word matters. Ejecting is the escape hatch for the moment the zero configuration promise stops paying, and it is the moment the toolkit's value drops to zero, because from then on you maintain the bundler setup yourself. The README also notes that the generated project transpiles with Babel, uses ES 6/7/8/Next, and ships ESLint configurations that your editor picks up automatically, with the WordPress and accessibility rulesets among the plugins listed in the project dependencies.

## The README opens by declaring the project archived

The very first line of the README states that the project is archived and looking for active maintainers, with a link to the issue thread where that call goes out. It also points readers to @wordpress/create-block, the official package documented on the WordPress developer site, as the thing to check out instead. This matters for any adoption decision, because an archived scaffold is a frozen starting point. The last push to the repository was on 2026-05-04, and the only listed release is version 1.0.0 from 2017-10-05, so the published npm artefact and the current source tree are not the same thing. The dependency versions in the project manifest belong to the same era, with an ESLint 4 line, Babel ESLint 8 and lerna 2.8. If you are starting a plugin today, the direction of travel is the official package, and the honest description of this repository is a historically important and now frozen implementation of the same idea.

## The CLI is a lerna monorepo with a tasks folder behind it

The repository is not a single package. The root package.json declares a private true field and a workspaces array pointing at packages/*, and lerna is in the dev dependencies, so the toolchain is a monorepo with independently versioned packages inside it. The scripts section shows what each piece is for: create-guten-block runs node tasks/cgb.js, cgb points at node packages/create-guten-block/index.js, and startCGB points at node packages/cgb-scripts/scripts/start.js, which is the cgb-scripts package the generated plugin depends on. Release and publish flows run through lerna bootstrap and lerna publish with an independent flag, and there are separate scripts for npm, for canary publishes and for a shelljs driven publish task. The lerna.json file, the packages directory and the tasks directory in the tree reflect that layout, and the .eslintrc.json, .eslintignore and .npmrc at the root are where the lint and npm behaviour is configured for the whole repo.

## MIT licensed, with an examples folder that shows the ejected form

The project is licensed MIT, which is permissive enough that the generated plugin code and the toolkit itself can be used in commercial work without a copyleft obligation, though the licence file governs the details and your own review should confirm that. The repository adds a changelog.md, a contributing.md, a code-of-conduct.md and a plugins.md, and that last file is a list of WordPress plugins built with the toolkit, which is a decent way to judge the range of output the scaffold produced in practice. The examples directory is the part engineers should look at first. It holds numbered example projects including a single block, a single block ejected, a multi block setup, a multi block ejected version, and an a11y-input example, plus a README of its own. Seeing the ejected variant next to the zero configuration one makes the trade-off concrete: the first pair shows what the scaffold gives you, the second pair shows what you are signing up for if you outgrow it.

## Conclusion

create-guten-block made sense for teams that wanted a working block plugin in a single command and were willing to accept the generated webpack setup, and its structure is still a useful reference for what a block plugin needs to contain. It is the wrong starting point for anything new, because the project is archived and its own README points to @wordpress/create-block as the replacement. Before you use it, read the archived notice at the top of the README, check the last push date of 2026-05-04 against the version of WordPress and @wordpress/scripts you plan to target, and if you must keep the old toolchain, note that ejecting is a one-way operation and that the generated project depends on a single package called cgb-scripts.

## FAQ

### How do I scaffold a Gutenberg block plugin with create-guten-block?

Run npx create-guten-block my-block from your local WordPress install plugins folder, then cd my-block and run npm start for development mode. The README says you need Node >= 8 and npm >= 5.3 on the development machine, and npx comes with npm 5.2 and higher.

### Is create-guten-block still maintained?

No. The README opens by stating that the project is archived and looking for active maintainers, and it points to @wordpress/create-block as the alternative to check out. The last push to the repository was on 2026-05-04.

### What does npm run eject do, and is it reversible?

It ejects the plugin out of create-guten-block and provides all the configurations so the project can be customised. The README describes it as a one-way street, so the zero configuration setup is gone after that point.

### What files does the generated plugin contain?

The generated directory holds a .gitignore, a plugin.php, a package.json, a readme.md, a dist folder with blocks.build.js, blocks.editor.build.css and blocks.style.build.css, and a src folder with a block directory containing block.js, editor.scss and style.scss, alongside blocks.js, common.scss and init.php.

### How many dependencies does the generated project carry?

The README lists ONE single cgb-scripts dependency as a property of the toolkit, with the rest of the toolchain, including React, webpack, Babel and ESLint, configured rather than hand assembled. The repository itself is a lerna monorepo over a packages/* workspaces array, and the cgb-scripts package holds the start script.

## Sources

- [ahmadawais/create-guten-block on GitHub](https://github.com/ahmadawais/create-guten-block)
- [License: MIT](https://github.com/ahmadawais/create-guten-block/blob/master/LICENSE)
- [Project website](https://Awais.dev/cgb-post)
- [README](https://github.com/ahmadawais/create-guten-block/blob/master/README.md)
- [Releases](https://github.com/ahmadawais/create-guten-block/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ahmadawais-create-guten-block
