Install
$ npm install -g yo generator-mnm
Usage
Usage:
yo mnm:app [options] [<name>]
Options:
-h, --help
--skip-cache
--skip-install
-a, --all
-y, --yes
Arguments:
name
If provided the module will be created inside ./<name>/
otherwise it will be created in the current directory
Examples:
$ yo mnm
$ yo mnm myAwesomeModule
Type: String Required: false
Example
$ yo mnm -y
create package.json
create README.md
create .gitignore
create src/index.js
create test/index.js
create .travis.yml
create .babelrc
create rollup.config.js
Features
- Made out of many other generators, the main generator only creates a
package.json
file and a minimal .gitignore
file - Composable, since the logic to create the README, cli and other files is on their own subgenerator
- Babel transpiles the code/tests
- standard to lint the code
- ava for testing
- yargs to parse cli arguments (optional)
- rollup to create a common js compatible bundle
- npm scripts as the build system
Example
Check https://github.com/maurizzzio/generator-mnm-example
List of npm scripts included
Common tasks
task | description |
---|
npm test | ava |
npm run build | rollup --config |
npm run lint | standard |
npm run clean | Removes all the files inside dist/ |
Watching files
task | description |
---|
npm run test:watch | Same as npm test but with --watch |
npm run build:watch | Same as npm run build but with --watch |
Pre/Post hooks
Task | description |
---|
npm run prebuild | Run before build , npm clean -s && npm lint -s |
npm run preversion | Run before version , npm run build |
Useful npm commands that you should know
npm version major|minor|patch
bumps the package versionnpm run
lists all available scripts
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:
Inspiration projects
I'd like to thank iamstarkov for his awesome work on generators that are actually composable
Composability
Just plug in any of the subgenerators or the app
generator itself on your generator
Generators used in this project
Workflow
yo mnm -y
ghrepo -m "initial commit"
travisjs hook
yo mnm:cli
Development
npm test
npm test:ci
run the tests (open ./test/ci/.tmp
to see a generated)
License
2015-2016 MIT © Mauricio Poppe