README
Create npm modules using
npm
as the build tool!
Install
$ npm install -g generator-node-npm
Usage
$ 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)
.
├── README.md
├── 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)
(only when the mode codeCoverage is turned on) npm run istanbul
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 versionnpm run
lists all available tasks
Why?
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:
- Why we should stop using grunt
- How to use npm as a build tool
- Task automation with run
- Choose grunt, gulp or npm
Inspiration projects
- https://github.com/yeoman/generator-node
- https://github.com/youngmountain/generator-node-gulp
- https://github.com/keithamus/npm-scripts-example 's awesome
package.json
file
Development
Run the tests with npm test
FAQ
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
License
2015 MIT © Mauricio Poppe