ether
v0.0.9
Published
Simple scaffolding tool.
Downloads
1,014
Readme
Ether
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 [email protected]