generator-mnm
v0.6.0
Published
Create node modules writing ES6 today compiled with Babel, tested with ava and linted with standard on top of npm scripts Create node modules with es6, test with tape on top of npm scripts
Readme
Install
$ npm install -g yo generator-mnmUsage
Usage:
yo mnm:app [options] [<name>]
Options:
-h, --help # Print the generator's options and usage
--skip-cache # Do not remember prompt answers Default: false
--skip-install # Do not automatically install dependencies Default: false
-a, --all # Ask all questions Default: false
-y, --yes # Skip some questions, like $ npm init -y Default: false
Arguments:
name # module 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: falseExample
$ 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.jsFeatures
- Made out of many other generators, the main generator only creates a
package.jsonfile and a minimal.gitignorefile - 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|patchbumps the package versionnpm runlists 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:
- 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/vinniegarcia/ES6-module-starter
- https://github.com/sindresorhus/generator-nm
- https://github.com/bucaran/generator-rise
- https://github.com/iamstarkov/generator-zen
- https://github.com/keithamus/npm-scripts-example 's awesome
package.jsonfile
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
- generator-babel
- generator-git-init
- generator-license
- generator-mnm/generators/src
- generator-mnm/generators/test
- generator-mnm/generators/cli
- generator-mnm/generators/readme
Workflow
# equivalent to npm init -y
yo mnm -y
# see https://www.npmjs.com/package/ghrepo
ghrepo -m "initial commit"
# see https://www.npmjs.com/package/travisjs
travisjs hook # or travis enable with the travis gem
# if a cli is needed
yo mnm:cliDevelopment
npm testnpm test:cirun the tests (open./test/ci/.tmpto see a generated)
License
2015-2016 MIT © Mauricio Poppe
