node package manager


Simple scaffolding tool.


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

[sudo] npm i ether
'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: [
nodeModule.task('questions', function (doneHandler) {'prompt', [nodeModule.get('questions'), doneHandler]);
nodeModule.task('build', function () {
  var self = this;
  self.get('tree').map(function (item) {'mkdir', item);
  return self;
nodeModule.task('seed', function (cb) {
  var self = this;
    .run('download', [
  return self;
nodeModule.make('default', function () {
  var self = this;
  function doneHandler() {'build');'seed', [function () {
      console.log('Download was completed and template too.');
  }'questions', [doneHandler]);
  return self;
module.exports = exports = nodeModule;
[sudo] npm i -g ether

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

ether -i etherfile.js

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

ether -u [etherfile] -m [task-name]
[sudo] npm i -g ether-node-module


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

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

var app = ether({
  name: 'Example'

Instantiation of the scaffolding.



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

Get and Set, modify the context of the instance.

app.task('create-app-structure', function () {'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.'mkdir', [destiny]);

On the destiny dir, this task create an new directory'copy', [source, destiny]);

That task make a copy of an file'template', [source, destiny]);

This task make a copy and replace variables from context of the instance of the scaffolding, to another new file.'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', [url, destiny, callback]);

To make download of an file and put in the project replacing, variables.'create-app-structure');

This method run tasks previously defined.

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

The make method can register a bunch of tasks.


And run a bunch of tasks.


Created by Kaique da Silva