0.4.0 • Published 4 years ago

flease v0.4.0

Weekly downloads
1
License
ISC
Repository
-
Last release
4 years ago

Flease :rocket::rocket:

If you always have to setup boilerplate code anytime you create a new file, and you need a way to do it faster, then this package is for you.

Flease is a command line tool that helps you generate files, and adds your preferred configuration. Think Laravel artisan in the php world; Except that this is configurable from a single .json file.

By default, it is designed to generate express files like models and controllers and also imports mongoose. However, it is not limited to Node js.

Installation

Run npm i -g flease to install globally.

Usage

To run any command, simply run flease [cmd] . Run flease --help to list all available commands

Case Study

For most of my nodejs projects, I generally use mongodb as the data store, and mongoose as the ODM. This means for every model I create, I'd have to import mongoose, setup the schema, export the schema e.t.c. This can become too repetitive.

With flease, run flease make:model User. You should have a models/User.js file in your project with the following content;

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;

const userSchema = new mongoose.Schema({
  created: {
    type: Date,
    default: Date.now
  },
});

module.exports = mongoose.model('User', userSchema);

You can also create a controller and associate it with a model instantly. Run flease make:controller UsersController --model User or flease mc UsersController --model User. You should now have a controllers/UsersController.js file in your project with the following content;

const mongoose = require('mongoose');
const User = mongoose.model('User');

//

Configuring

All generated codes are obtained from a single json file. You should publish it so that you can edit accordingly. Run flease publish. You should get a flease.json file that looks like this;

{
    "models": [
        "const mongoose = require('mongoose');\n",
        "mongoose.Promise = global.Promise;\n\n",
        "const #{name}Schema = new mongoose.Schema({\n",
            "\tcreated: {\n",
            "\t\ttype: Date,\n",
            "\t\tdefault: Date.now\n",
            "\t},\n",
        "});\n\n",
        "module.exports = mongoose.model('#{model}', #{name}Schema);"
    ],
    "controllers": [
        "const mongoose = require('mongoose');\n",
        "const #{model} = mongoose.model('#{model}');\n\n",
        "//"
    ]
}

You can edit or add new lines in each section. As long as it is a valid json string, it will work fine.

Testing

This project uses Jest for automated testing. Run npm test

Todo's

Some upcoming features include;

  • Generate any file from config
  • Extensive tests
  • Saving config file as preset globally

Contributing

Please feel free to fork this package and contribute by submitting a pull request to enhance the functionalities.

Dont forget to leave a :star: on this repo :wink:

License

The MIT License (MIT). Please see License File for more information.