diff --git a/.gitignore b/.gitignore
index 5a451dc..465ed0d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
node_modules/
-*.log
\ No newline at end of file
+*.log
+*.iml
+.idea
\ No newline at end of file
diff --git a/app/index.js b/app/index.js
index 3f07cbb..b20dfdd 100644
--- a/app/index.js
+++ b/app/index.js
@@ -1,13 +1,14 @@
'use strict';
-var yeoman = require('yeoman-generator');
-var chalk = require('chalk');
-var npmCheck = require('npm-check');
-var path = require('path');
-var yosay = require('yosay');
+var yeoman = require('yeoman-generator'),
+ chalk = require('chalk'),
+ npmCheck = require('npm-check'),
+ path = require('path'),
+ yosay = require('yosay'),
+ l = require('lodash');
module.exports = yeoman.generators.Base.extend({
- constructor: function() {
+ constructor: function () {
yeoman.generators.Base.apply(this, arguments);
// add option to skip install
this.option('skip-install');
@@ -15,10 +16,13 @@ module.exports = yeoman.generators.Base.extend({
type: String,
required: false
});
- this.appname = this.appname || path.basename(process.cwd());
+ var appName = this.appname || path.basename(process.cwd());
+ this.appname = l.kebabCase(appName);
+ this.modulename = l.snakeCase(appName);
+ this.classname = l.capitalize(l.camelCase(appName));
},
- prompting: function() {
+ prompting: function () {
// Yeoman greeting
this.log(yosay(
'Yo! I\'m here to help build your ' +
@@ -28,8 +32,8 @@ module.exports = yeoman.generators.Base.extend({
},
writing: {
- app: function() {
- this.basicTemplate = 'src/' + this._.slugify(this.appname);
+ app: function () {
+ this.basicTemplate = 'src/' + l.kebabCase(this.appname);
this.copy('_package.json', 'package.json');
this.copy('_gulpfile.js', 'gulpfile.js');
@@ -37,7 +41,6 @@ module.exports = yeoman.generators.Base.extend({
this.copy('_editorconfig', '.editorconfig');
this.copy('_gitignore', '.gitignore');
- this.mkdir('src');
this.copy('src/_index.js', 'src/index.js');
this.copy('src/_index.html', 'src/index.html');
this.copy('src/_basic-template.html', this.basicTemplate + '.html');
@@ -45,25 +48,25 @@ module.exports = yeoman.generators.Base.extend({
}
},
- install: function() {
+ install: function () {
this.installDependencies({
skipInstall: this.options['skip-install'],
bower: false,
- callback: function() {
+ callback: function () {
this.emit('dependenciesInstalled');
}.bind(this)
});
- this.on('dependenciesInstalled', function() {
+ this.on('dependenciesInstalled', function () {
npmCheck({
global: true
- }).then(function(globalPackages) {
+ }).then(function (globalPackages) {
if (!globalPackages.gulp) {
return './node_modules/.bin/gulp';
}
return 'gulp';
- }).then(function(gulpCommand) {
- this.spawnCommand(gulpCommand).on('close', function() {
+ }).then(function (gulpCommand) {
+ this.spawnCommand(gulpCommand).on('close', function () {
this.log('');
this.log('');
this.log('Setup complete, run ' +
diff --git a/app/templates/_gulpfile.js b/app/templates/_gulpfile.js
index ed40c78..20a9e6d 100644
--- a/app/templates/_gulpfile.js
+++ b/app/templates/_gulpfile.js
@@ -1,9 +1,9 @@
-var gulp = require('gulp');
-var concat = require('gulp-concat');
-var rename = require('gulp-rename');
-var shell = require('gulp-shell');
-var traceur = require('gulp-traceur');
-var webserver = require('gulp-webserver');
+var gulp = require('gulp'),
+ concat = require('gulp-concat'),
+ rename = require('gulp-rename'),
+ shell = require('gulp-shell'),
+ traceur = require('gulp-traceur'),
+ webserver = require('gulp-webserver');
// run init tasks
gulp.task('default', ['dependencies', 'angular2', 'js', 'html', 'css']);
@@ -12,7 +12,7 @@ gulp.task('default', ['dependencies', 'angular2', 'js', 'html', 'css']);
gulp.task('dev', ['watch', 'serve']);
// serve the build dir
-gulp.task('serve', function() {
+gulp.task('serve', function () {
gulp.src('build')
.pipe(webserver({
open: true
@@ -20,37 +20,37 @@ gulp.task('serve', function() {
});
// watch for changes and run the relevant task
-gulp.task('watch', function() {
+gulp.task('watch', function () {
gulp.watch('src/**/*.js', ['js']);
gulp.watch('src/**/*.html', ['html']);
gulp.watch('src/**/*.css', ['css']);
});
// move dependencies into build dir
-gulp.task('dependencies', function() {
+gulp.task('dependencies', function () {
return gulp.src([
- 'node_modules/angular2/node_modules/rx/dist/rx.all.js',
- 'node_modules/angular2/node_modules/traceur/bin/traceur.js',
- 'node_modules/angular2/node_modules/traceur/bin/traceur-runtime.js',
- 'node_modules/angular2/node_modules/zone.js/zone.js',
- 'node_modules/es6-module-loader/dist/es6-module-loader.js',
- 'node_modules/es6-module-loader/dist/es6-module-loader.js.map',
- 'node_modules/systemjs/dist/system.js',
- 'node_modules/systemjs/dist/system.js.map'
- ])
+ 'node_modules/angular2/node_modules/rx/dist/rx.all.js',
+ 'node_modules/angular2/node_modules/traceur/bin/traceur.js',
+ 'node_modules/angular2/node_modules/traceur/bin/traceur-runtime.js',
+ 'node_modules/angular2/node_modules/zone.js/zone.js',
+ 'node_modules/es6-module-loader/dist/es6-module-loader.js',
+ 'node_modules/es6-module-loader/dist/es6-module-loader.js.map',
+ 'node_modules/systemjs/dist/system.js',
+ 'node_modules/systemjs/dist/system.js.map'
+ ])
.pipe(gulp.dest('build/lib'));
});
// tanspile, concat & move angular
-gulp.task('angular2', function() {
+gulp.task('angular2', function () {
return gulp.src([
- traceur.RUNTIME_PATH,
- 'node_modules/angular2/es6/prod/*.es6',
- 'node_modules/angular2/es6/prod/src/**/*.es6'
- ], {
- base: 'node_modules/angular2/es6/prod'
- })
- .pipe(rename(function(path) {
+ traceur.RUNTIME_PATH,
+ 'node_modules/angular2/es6/prod/*.es6',
+ 'node_modules/angular2/es6/prod/src/**/*.es6'
+ ], {
+ base: 'node_modules/angular2/es6/prod'
+ })
+ .pipe(rename(function (path) {
path.dirname = 'angular2/' + path.dirname;
path.extname = '';
}))
@@ -63,7 +63,7 @@ gulp.task('angular2', function() {
});
// transpile & move js
-gulp.task('js', function() {
+gulp.task('js', function () {
return gulp.src('src/**/*.js')
.pipe(rename({
extname: ''
@@ -81,13 +81,13 @@ gulp.task('js', function() {
});
// move html
-gulp.task('html', function() {
+gulp.task('html', function () {
return gulp.src('src/**/*.html')
.pipe(gulp.dest('build'))
});
// move css
-gulp.task('css', function() {
+gulp.task('css', function () {
return gulp.src('src/**/*.css')
.pipe(gulp.dest('build'))
});
diff --git a/app/templates/_package.json b/app/templates/_package.json
index f7c8ad3..8d73433 100644
--- a/app/templates/_package.json
+++ b/app/templates/_package.json
@@ -1,17 +1,17 @@
{
- "name": "<%= _.slugify(appname) %>",
+ "name": "<%= appname %>",
"version": "0.0.0",
"dependencies": {
- "angular2": "^2.0.0-alpha.18",
- "es6-module-loader": "~0.11.0",
- "systemjs": "~0.11.0"
+ "angular2": "2.0.0-alpha.21",
+ "es6-module-loader": "0.16.6",
+ "systemjs": "0.16.10"
},
"devDependencies": {
- "gulp": "^3.8.11",
- "gulp-concat": "^2.5.2",
- "gulp-rename": "^1.2.0",
- "gulp-shell": "^0.4.0",
- "gulp-traceur": "^0.17.0",
- "gulp-webserver": "^0.9.0"
+ "gulp": "3.8.11",
+ "gulp-concat": "2.5.2",
+ "gulp-rename": "1.2.2",
+ "gulp-shell": "0.4.1",
+ "gulp-traceur": "0.17.1",
+ "gulp-webserver": "0.9.0"
}
}
diff --git a/app/templates/_readme.md b/app/templates/_readme.md
index 9e7b96f..fec508b 100644
--- a/app/templates/_readme.md
+++ b/app/templates/_readme.md
@@ -1 +1 @@
-# <%= _.capitalize(_.humanize(appname)) %>
\ No newline at end of file
+# <%= appname %>
diff --git a/app/templates/src/_basic-template.html b/app/templates/src/_basic-template.html
index 99fe78b..af1c7df 100644
--- a/app/templates/src/_basic-template.html
+++ b/app/templates/src/_basic-template.html
@@ -1 +1 @@
-
<%= _.capitalize(_.humanize(appname)) %>
\ No newline at end of file
+<%= appname %>
diff --git a/app/templates/src/_basic-template.js b/app/templates/src/_basic-template.js
index bfc0dd8..58c7076 100644
--- a/app/templates/src/_basic-template.js
+++ b/app/templates/src/_basic-template.js
@@ -1,17 +1,17 @@
import {Component, View} from 'angular2/angular2';
@Component({
- selector: '<%= _.slugify(appname) %>'
+ selector: '<%= appname %>'
})
@View({
- templateUrl: '<%= _.slugify(appname) %>.html'
+ templateUrl: '<%= appname %>.html'
})
-export class <%= _.classify(appname) %> {
+export class <%= classname %> {
constructor() {
- console.info('<%= _.classify(appname) %> Component Mounted Successfully');
+ console.info('<%= classname %> Component Mounted Successfully');
}
}
diff --git a/app/templates/src/_index.html b/app/templates/src/_index.html
index 23bd727..676b0dd 100644
--- a/app/templates/src/_index.html
+++ b/app/templates/src/_index.html
@@ -4,7 +4,7 @@
- <%= _.capitalize(_.humanize(appname)) %>
+ <%= appname %>
@@ -17,6 +17,7 @@
System.config({
paths: {
'angular2/*': 'lib/angular2.js',
+ 'traceur-runtime': 'lib/traceur-runtime.js',
'rx/dist/rx.all': 'lib/rx.all.js',
'index': 'index.js'
}
diff --git a/app/templates/src/_index.js b/app/templates/src/_index.js
index 6b2f4df..9007f57 100644
--- a/app/templates/src/_index.js
+++ b/app/templates/src/_index.js
@@ -1,14 +1,14 @@
import {Component, View, bootstrap} from 'angular2/angular2';
-import {<%= _.classify(appname) %>} from '<%= _.slugify(appname) %>';
+import {<%= classname %>} from '<%= appname %>';
@Component({
selector: 'main'
})
@View({
- directives: [<%= _.classify(appname) %>],
+ directives: [<%= classname %>],
template: `
- <<%= _.slugify(appname) %>><%= _.slugify(appname) %>>
+ <<%= appname %>><%= appname %>>
`
})
diff --git a/package.json b/package.json
index 06fef5b..399fc3e 100644
--- a/package.json
+++ b/package.json
@@ -31,12 +31,13 @@
],
"preferGlobal": true,
"dependencies": {
- "chalk": "^1.0.0",
- "npm-check": "^3.2.10",
- "yeoman-generator": "^0.18.9",
- "yosay": "^1.0.2"
+ "chalk": "1.0.0",
+ "lodash": "3.7.0",
+ "npm-check": "3.2.10",
+ "yeoman-generator": "0.19.2",
+ "yosay": "1.0.2"
},
"devDependencies": {
- "mocha": "*"
+ "mocha": "2.2.4"
}
}
diff --git a/test/test-app.js b/test/test-app.js
index 1a2158c..6dcd005 100644
--- a/test/test-app.js
+++ b/test/test-app.js
@@ -1,13 +1,13 @@
'use strict';
-var path = require('path');
-var assert = require('yeoman-generator').assert;
-var helpers = require('yeoman-generator').test;
-var os = require('os');
+var path = require('path'),
+ assert = require('yeoman-generator').assert,
+ helpers = require('yeoman-generator').test,
+ os = require('os');
-describe('when angular2 generator generates', function() {
+describe('when angular2 generator generates', function () {
- before(function(done) {
+ before(function (done) {
helpers.run(path.join(__dirname, '../app'))
.inDir(path.join(os.tmpdir(), './foo'))
// always skip install in tests
@@ -17,7 +17,7 @@ describe('when angular2 generator generates', function() {
.on('end', done);
});
- it('should create the required static files', function() {
+ it('should create the required static files', function () {
assert.file([
'package.json',
'.editorconfig',
@@ -29,10 +29,10 @@ describe('when angular2 generator generates', function() {
]);
});
- describe('when no arguments are passed through', function() {
+ describe('when no arguments are passed through', function () {
- describe('when generation happens in a basic named directory', function() {
- before(function(done) {
+ describe('when generation happens in a basic named directory', function () {
+ before(function (done) {
helpers.run(path.join(__dirname, '../app'))
.inDir(path.join(os.tmpdir(), './basic'))
// always skip install in tests
@@ -42,7 +42,7 @@ describe('when angular2 generator generates', function() {
.on('end', done);
});
- it('should create the dynamically named files named correctly', function() {
+ it('should create the dynamically named files named correctly', function () {
assert.file([
'src/basic.js',
'src/basic.html'
@@ -50,8 +50,8 @@ describe('when angular2 generator generates', function() {
});
});
- describe('when generation happens in a dashed named directory', function() {
- before(function(done) {
+ describe('when generation happens in a dashed named directory', function () {
+ before(function (done) {
helpers.run(path.join(__dirname, '../app'))
.inDir(path.join(os.tmpdir(), './dash-named'))
// always skip install in tests
@@ -61,7 +61,7 @@ describe('when angular2 generator generates', function() {
.on('end', done);
});
- it('should create the dynamically named files named correctly', function() {
+ it('should create the dynamically named files named correctly', function () {
assert.file([
'src/dash-named.js',
'src/dash-named.html'
@@ -69,8 +69,8 @@ describe('when angular2 generator generates', function() {
});
});
- describe('when generation happens in a case named directory', function() {
- before(function(done) {
+ describe('when generation happens in a case named directory', function () {
+ before(function (done) {
helpers.run(path.join(__dirname, '../app'))
.inDir(path.join(os.tmpdir(), './caseNamed'))
// always skip install in tests
@@ -81,20 +81,20 @@ describe('when angular2 generator generates', function() {
.on('end', done);
});
- it('should create the dynamically named files named correctly', function() {
+ it('should create the dynamically named files named correctly', function () {
assert.file([
- 'src/casenamed.js',
- 'src/casenamed.html'
+ 'src/case-named.js',
+ 'src/case-named.html'
]);
});
});
});
- describe('when arguments are passed through', function() {
+ describe('when arguments are passed through', function () {
- describe('when generation happens with a basic name passed as an argument', function() {
- before(function(done) {
+ describe('when generation happens with a basic name passed as an argument', function () {
+ before(function (done) {
helpers.run(path.join(__dirname, '../app'))
.inDir(path.join(os.tmpdir(), './foo'))
// always skip install in tests
@@ -105,7 +105,7 @@ describe('when angular2 generator generates', function() {
.on('end', done);
});
- it('should create the dynamically named files named correctly', function() {
+ it('should create the dynamically named files named correctly', function () {
assert.file([
'src/basic.js',
'src/basic.html'
@@ -113,8 +113,8 @@ describe('when angular2 generator generates', function() {
});
});
- describe('when generation happens with a dashed name as an argument', function() {
- before(function(done) {
+ describe('when generation happens with a dashed name as an argument', function () {
+ before(function (done) {
helpers.run(path.join(__dirname, '../app'))
.inDir(path.join(os.tmpdir(), './foo'))
// always skip install in tests
@@ -125,7 +125,7 @@ describe('when angular2 generator generates', function() {
.on('end', done);
});
- it('should create the dynamically named files named correctly', function() {
+ it('should create the dynamically named files named correctly', function () {
assert.file([
'src/dash-named.js',
'src/dash-named.html'
@@ -133,8 +133,8 @@ describe('when angular2 generator generates', function() {
});
});
- describe('when generation happens with a cased name as an argument', function() {
- before(function(done) {
+ describe('when generation happens with a cased name as an argument', function () {
+ before(function (done) {
helpers.run(path.join(__dirname, '../app'))
.inDir(path.join(os.tmpdir(), './foo'))
// always skip install in tests
@@ -145,10 +145,10 @@ describe('when angular2 generator generates', function() {
.on('end', done);
});
- it('should create the dynamically named files named correctly', function() {
+ it('should create the dynamically named files named correctly', function () {
assert.file([
- 'src/casedname.js',
- 'src/casedname.html'
+ 'src/cased-name.js',
+ 'src/cased-name.html'
]);
});
});