Create npm modules using `npm` as the build tool!

Usage no npm install needed!

<script type="module">
  import generatorNodeNpm from '';


generator-node-npm Build Status


Create npm modules using npm as the build tool!


$ npm install -g generator-node-npm


$ yo node-npm

Note that this template will generate files in the current directory, so be sure to change to a new directory first if you don't want to overwrite existing files.

Directory structure

Generated with yo node-npm inside a new project (cli/codeCoverage modes turned on)

├── bin (if required)
├── index.js
├── lib
│   └── <main file>.js
├── package.json
└── test
    └── index.js

Available Tasks

You can see the list of all available tasks running npm run on the generated project (below is the scripts field of package.json generated with the cli/codeCoverage modes turned on)

  "scripts": {
    "istanbul": "istanbul cover test/index.js",
    "lint": "standard",
    "test": "node test/index.js | tap-spec",
    "test:watch": "gaze 'npm test' 'test/**/*.js' 'lib/**/*.js' 'index.js'",
    "start": "npm run test:watch"

npm start

Alias for npm test:watch

npm test

Executes the tests located in test/index.js, powered by substack/tape

npm run test:watch

Watches the content of index.js, lib/ and test/, if the content of any file changes then npm test is executed

npm run lint

Lints index.js, test/, lib/ (powered by feross/standard)

npm run istanbul (only when the mode codeCoverage is turned on)

Generates a coverage report of the files tested by test/index.js, additionally when a build is triggered on TravisCI the coverage report will be sent to Coveralls

Useful npm commands that you should know

  • npm version major|minor|patch bumps the package version
  • npm run lists all available tasks


This project is heavily inspired by this article by Keith Cirkel where he describes that the existing build system tools attempt to solve the problems that exist among them "covering up the inadequacies of the other tools while also surfacing their own".

James Halliday who is the creator of many awesome packages like browserify and tape also wrote an article where he points out that the command npm run is "perfectly adequate for everything while maintaining a very tiny configuration footprint."

Articles to read:

Inspiration projects


Run the tests with npm test


The generator fails if there's no internet connection, why?

The generator uses the package npm-name to check whether the package name is available on npm, to disable the check define the env variable SKIP

SKIP=true yo node-npm


2015 MIT © Mauricio Poppe