diff --git a/tooling/generators/component/component.tmpl.html b/tooling/generators/component/component.tmpl.html
new file mode 100644
index 0000000000..db07f53219
--- /dev/null
+++ b/tooling/generators/component/component.tmpl.html
@@ -0,0 +1,3 @@
+
+ <%= javascriptClassName %>
+
diff --git a/tooling/generators/component/component.tmpl.js b/tooling/generators/component/component.tmpl.js
new file mode 100644
index 0000000000..753ba7263c
--- /dev/null
+++ b/tooling/generators/component/component.tmpl.js
@@ -0,0 +1,15 @@
+import {Component, NgIf} from 'angular2/angular2';
+
+@Component({
+ directives: [NgIf],
+ properties: ['value'], //Change to be whatever properties you want, ex: <<%= fileAndClassName %> value="5">
+ selector: '<%= fileAndClassName %>',
+ templateUrl: 'app/<%= fileAndClassName %>/<%= fileAndClassName %>.html'
+})
+export class <%= javascriptClassName %> {
+ constructor() {
+ this.nav = nav;
+ this.popup = popup;
+ this.dataService = dataService;
+ }
+}
diff --git a/tooling/generators/component/index.js b/tooling/generators/component/index.js
new file mode 100644
index 0000000000..8d361acd1d
--- /dev/null
+++ b/tooling/generators/component/index.js
@@ -0,0 +1,26 @@
+var fs = require('fs'),
+ Generator = module.exports,
+ Generate = require('../../generate'),
+ path = require('path'),
+ Q = require('q');
+/*
+ @options
+ name: Page name
+ appDirectory: App directory of where to save file
+*/
+Generator.run = function run(options) {
+ options.rootDirectory = options.rootDirectory || path.join('www', 'app');
+ var savePath = path.join(options.appDirectory, options.rootDirectory, options.fileAndClassName);
+
+ var templates = Generate.loadGeneratorTemplates(__dirname);
+
+ templates.forEach(function(template) {
+ var templatePath = path.join(__dirname, template.file);
+ options.templatePath = templatePath;
+ var renderedTemplate = Generate.renderTemplateFromFile(options);
+ var saveFilePath = path.join(savePath, [options.fileAndClassName, template.type].join(''));
+ // console.log('renderedTemplate', renderedTemplate, 'saving to', saveFilePath);
+ console.log('√ Create'.blue, path.relative(options.appDirectory, saveFilePath));
+ fs.writeFileSync(saveFilePath, renderedTemplate);
+ });
+};
diff --git a/tooling/generators/directive/directive.tmpl.js b/tooling/generators/directive/directive.tmpl.js
new file mode 100644
index 0000000000..4441ef0f21
--- /dev/null
+++ b/tooling/generators/directive/directive.tmpl.js
@@ -0,0 +1,11 @@
+import {Directive, ElementRef} from 'angular2/angular2';
+
+@Directive({
+ properties: ['<%= fileAndClassName %>'], //Change to be whatever properties you want, ex: <<%= fileAndClassName %> value="5">
+ inputs: ['<%= fileAndClassName %>']
+})
+export class <%= javascriptClassName %> {
+ constructor(elementRef: ElementRef) {
+ this.ele = elementRef;
+ }
+}
diff --git a/tooling/generators/directive/index.js b/tooling/generators/directive/index.js
new file mode 100644
index 0000000000..8d361acd1d
--- /dev/null
+++ b/tooling/generators/directive/index.js
@@ -0,0 +1,26 @@
+var fs = require('fs'),
+ Generator = module.exports,
+ Generate = require('../../generate'),
+ path = require('path'),
+ Q = require('q');
+/*
+ @options
+ name: Page name
+ appDirectory: App directory of where to save file
+*/
+Generator.run = function run(options) {
+ options.rootDirectory = options.rootDirectory || path.join('www', 'app');
+ var savePath = path.join(options.appDirectory, options.rootDirectory, options.fileAndClassName);
+
+ var templates = Generate.loadGeneratorTemplates(__dirname);
+
+ templates.forEach(function(template) {
+ var templatePath = path.join(__dirname, template.file);
+ options.templatePath = templatePath;
+ var renderedTemplate = Generate.renderTemplateFromFile(options);
+ var saveFilePath = path.join(savePath, [options.fileAndClassName, template.type].join(''));
+ // console.log('renderedTemplate', renderedTemplate, 'saving to', saveFilePath);
+ console.log('√ Create'.blue, path.relative(options.appDirectory, saveFilePath));
+ fs.writeFileSync(saveFilePath, renderedTemplate);
+ });
+};
diff --git a/tooling/generators/injectable/index.js b/tooling/generators/injectable/index.js
new file mode 100644
index 0000000000..70cddd3626
--- /dev/null
+++ b/tooling/generators/injectable/index.js
@@ -0,0 +1,27 @@
+var fs = require('fs'),
+ Generator = module.exports,
+ Generate = require('../../generate'),
+ path = require('path'),
+ Q = require('q');
+/*
+ @options
+ name: Page name
+ appDirectory: App directory of where to save file
+*/
+Generator.run = function run(options) {
+
+ options.rootDirectory = options.rootDirectory || path.join('www', 'app');
+ var savePath = path.join(options.appDirectory, options.rootDirectory, options.fileAndClassName);
+
+ var templates = Generate.loadGeneratorTemplates(__dirname);
+
+ templates.forEach(function(template) {
+ var templatePath = path.join(__dirname, template.file);
+ options.templatePath = templatePath;
+ var renderedTemplate = Generate.renderTemplateFromFile(options);
+ var saveFilePath = path.join(savePath, [options.fileAndClassName, template.type].join(''));
+ // console.log('renderedTemplate', renderedTemplate, 'saving to', saveFilePath);
+ console.log('√ Create'.blue, path.relative(options.appDirectory, saveFilePath));
+ fs.writeFileSync(saveFilePath, renderedTemplate);
+ });
+};
diff --git a/tooling/generators/injectable/injectable.tmpl.js b/tooling/generators/injectable/injectable.tmpl.js
new file mode 100644
index 0000000000..d1b2865c15
--- /dev/null
+++ b/tooling/generators/injectable/injectable.tmpl.js
@@ -0,0 +1,21 @@
+import {Injectable} from 'angular2/angular2';
+import {Http} from 'angular2/http';
+
+@Injectable()
+export class <%= javascriptClassName %> {
+ constructor(http: Http) {
+ this.http = http;
+ this.data = null;
+ }
+
+ retrieveData() {
+ //Here, we're going to get a JSON data file, use the `map` call to parse json
+ // and finally subscribe to the observable and set our data
+ //to the value it provides once the http request is complete.
+ this.http.get('path/to/data.json')
+ .map(res => res.json())
+ .subscribe(data => {
+ this.data = data;
+ });
+ }
+}