generator-mnm

0.6.0 • Public • Published

Create node modules writing ES6/ES7 today compiled with Babel, tested with ava, bundled with rollup and linted with standard on top of npm scripts

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 version
  • npm 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

# 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

Package Sidebar

Install

npm i generator-mnm

Weekly Downloads

0

Version

0.6.0

License

MIT

Last publish

Collaborators

  • mauriciopoppe
  • maurizzzio