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
Downloads
5
Readme
Install
$ npm install -g yo generator-mnm
Usage
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: 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:
- 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.json
file
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:cli
Development
npm test
npm test:ci
run the tests (open./test/ci/.tmp
to see a generated)
License
2015-2016 MIT © Mauricio Poppe