I wanted to introduce a little tool I made called create-yo.

Beginning in npm v6.1.0, npm init <something> lets you magically invoke a scaffolding tool (think create-react-app) using npx.

If you’re not familiar with npx , it’s a tool installed alongside npm which allows execution of command-line Node.js packages without first having to npm install --global <package-name> .

For example, running npm init react-app will use npx to grab create-react-app , then execute its script specified in its bin property of its package.json . In other words, npm init react-app is the same as invoking npx create-react-app .

Since the scaffolding tool Yeoman has a large ecosystem already, I thought it might be cool to piggyback on the new(-ish) functionality of npm init .

Example

To run any Yeoman generator, all you need to do (given npm v6.1.0+ and Node.js v8.0.0+) is execute:

$ npm init yo foo

…where foo refers to package generator-foo . A more concrete example—to run Yeoman’s own generator-generator, would be this:

$ npm init yo generator

After npx does its thing, you’ll be prompted to to complete the wizard.

It also supports subgenerators, e.g.:

$ npm init yo generator:subgenerator

Invokes the subgenerator subgenerator of the generator generator. Yep.

For The Curious

npx calls create-yo ’s executable, which in turn invokes npx (via libnpx) to run yo ’s executable. It uses npx ’s --package option to grab your generator. It is not fancy.

I'm happy to make this work with Yarn if possible (and would accept a PR to that effect), but don't use Yarn, so I won't be implementing it myself.

Here’s create-yo on GitHub, and its package on npmjs.com.

TL;DR