Narcoleptic Pasta Manufacturer
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    etherpublic

    Ether

    Status

    Build Status

    Description

    Ether is a simple tool to make scaffolding easy, and fun in a programmatic way.

    Installation

    [sudo] npm i ether
    

    Ether file

    Example

    'use strict';
    var path = require('path');
    var ether = require('ether');
    var nodeModule = ether({
      questions: [{
        type: 'input',
        name: 'name',
        message: 'Whats the name of the module?'
      }, {
        type: 'input',
        name: 'version',
        message: 'Whats the version of the module?',
        default: '0.0.1'
      }, {
        type: 'input',
        name: 'entryPoint',
        message: 'What the entry point of the module?',
        default: 'index.js',
      }, {
        type: 'input',
        name: 'author',
        message: 'Who is the author of the module?'
      }, {
        type: '',
        name: 'public',
        message: 'This module is public?',
        default: true
      }],
      tree: [
        ['{{name}}'],
        ['{{name}}/bin'],
        ['{{name}}/lib'],
        ['{{name}}/examples'],
        ['{{name}}/test']
      ],
    });
     
    nodeModule.task('questions', function (doneHandler) {
      nodeModule.run('prompt', [nodeModule.get('questions'), doneHandler]);
    });
     
    nodeModule.task('build', function () {
      var self = this;
     
      self.get('tree').map(function (item) {
        self.run('mkdir', item);
      });
     
      return self;
    });
     
    nodeModule.task('seed', function (cb) {
      var self = this;
     
      self
        .run('download', [
          'https://gist.github.com/kaiquewdev/9087288/raw/b7d70fc5e3aad9e04b6549bc4239f38f1149af5c/ether-package.json',
          './{{name}}/package.json'),
          cb
        ]);
     
      return self;
    });
     
    nodeModule.make('default', function () {
      var self = this;
     
      function doneHandler() {
        nodeModule.run('build');
        nodeModule.run('seed', [function () {
          console.log('Download was completed and template too.');
        }]);
      }
      nodeModule.run('questions', [doneHandler]);
     
      return self;
    });
     
    module.exports = exports = nodeModule;

    Install the cli

    [sudo] npm i -g ether

    Use the cli tool, to run scaffolding, to generate new applications.

    Use the '--install' option

    ether -i etherfile.js

    The install option use the etherfile.js or and module installed.

    To run make tasks registered in the etherfile use

    ether -u [etherfile] -m [task-name]

    Global scaffolding

    [sudo] npm i -g ether-node-module

    and

    ether -i ether-node-module
     
    or
     
    ether -i node_modules/ether-node-module

    Or using this way to install one scaffolding from npm, and run this scaffolding app.

    API

    Instance

    var app = ether({
      name: 'Example'
    });

    Instantiation of the scaffolding.

    Get and Set

    app.get('name');

    and

    app.set('version', '0.0.1');

    Get and Set, modify the context of the instance.

    Task

    app.task('create-app-structure', function () {
      app.run('mkdir', ['app/'])
         .run('mkdir', ['app/models'])
         .run('mkdir', ['app/views'])
         .run('mkdir', ['app/controllers']);
    });

    using the task method you can create new methods to reuse in the instance, of the current scaffolding app.

    Default tasks

    Mkdir
    app.run('mkdir', [destiny]);

    On the destiny dir, this task create an new directory

    Copy

    app.run('copy', [source, destiny]);

    That task make a copy of an file

    Template

    app.run('template', [source, destiny]);

    This task make a copy and replace variables from context of the instance of the scaffolding, to another new file.

    Prompt

    app.run('prompt', [[{type:'input', name: 'name', message: 'Whats the name of that application?'}]]);

    To put variables using the interactive mode in the context of the instance, use this method.

    Download

    app.run('download', [url, destiny, callback]);

    To make download of an file and put in the project replacing, variables.

    Run

    app.run('create-app-structure');

    This method run tasks previously defined.

    Make

    app.make('default', function () {
      app.run('create-app-structure');
    });

    The make method can register a bunch of tasks.

    Make run

    app.make('default');

    And run a bunch of tasks.

    Note

    [WIP]

    Created by Kaique da Silva kaique.developer@gmail.com

    install

    npm i ether

    Downloadsweekly downloads

    49

    version

    0.0.9

    license

    ISC

    repository

    githubgithub

    last publish

    collaborators

    • avatar