diff --git a/generators/app/index.js b/generators/app/index.js index eea015c..5470b49 100644 --- a/generators/app/index.js +++ b/generators/app/index.js @@ -126,6 +126,16 @@ module.exports = generators.Base.extend({ local: require.resolve('../boilerplate') }); + this.composeWith('jekyllized:bower', { + options: { + projectName: this.props.projectName, + authorName: this.props.authorName, + authorEmail: this.props.authorEmail + } + }, { + local: require.resolve('../bower') + }); + this.composeWith('jekyllized:gulp', { options: { uploading: this.props.uploading diff --git a/generators/bower/index.js b/generators/bower/index.js new file mode 100644 index 0000000..ff9408e --- /dev/null +++ b/generators/bower/index.js @@ -0,0 +1,44 @@ +'use strict'; + +var generators = require('yeoman-generator'); + +module.exports = generators.Base.extend({ + constructor: function() { + generators.Base.apply(this, arguments); + + this.option('projectName', { + type: String, + required: true, + desc: 'Project name' + }); + + this.option('authorName', { + type: String, + required: true, + desc: 'Author name' + }); + + this.option('authorEmail', { + type: String, + required: true, + desc: 'Author email' + }); + }, + + configuring: function() { + this.fs.copyTpl( + this.templatePath('bower.json'), + this.destinationPath('bower.json'), + { + projectName: this.options.projectName, + authorName: this.options.authorName, + authorEmail: this.options.authorEmail + } + ); + + this.fs.copy( + this.templatePath('bowerrc'), + this.destinationPath('.bowerrc') + ); + } +}); diff --git a/generators/bower/templates/bower.json b/generators/bower/templates/bower.json new file mode 100644 index 0000000..c042395 --- /dev/null +++ b/generators/bower/templates/bower.json @@ -0,0 +1,17 @@ +{ + "name": "<%= projectName %>", + "version": "0.0.0", + "authors": [ + "<%= authorName %> <<%= authorEmail %>>" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "dependencies": { + } +} diff --git a/generators/bower/templates/bowerrc b/generators/bower/templates/bowerrc new file mode 100644 index 0000000..959e169 --- /dev/null +++ b/generators/bower/templates/bowerrc @@ -0,0 +1,4 @@ +{ + "directory": "bower_components", + "analytics": false +} diff --git a/generators/gulp/index.js b/generators/gulp/index.js index 6494202..ef463c7 100644 --- a/generators/gulp/index.js +++ b/generators/gulp/index.js @@ -24,6 +24,7 @@ module.exports = generators.Base.extend({ pkg.devDependencies = pkg.devDependencies || {}; _.extend(pkg.devDependencies, { 'babel': '^5.6.8', + 'bower': '^1.4.1', 'browser-sync': '^2.7.12', 'del': '^1.1.1', 'gulp': 'git://github.com/gulpjs/gulp.git#4.0', diff --git a/index.js b/index.js index c2d63ed..eef2953 100644 --- a/index.js +++ b/index.js @@ -3,6 +3,7 @@ module.exports = { app: require.resolve('./generators/app'), boilerplate: require.resolve('./generators/boilerplate'), + bower: require.resolve('./generators/bower'), gulp: require.resolve('./generators/gulp'), jekyll: require.resolve('./generators/jekyll') }; diff --git a/test/app.js b/test/app.js index e3610f7..23f615b 100644 --- a/test/app.js +++ b/test/app.js @@ -58,8 +58,11 @@ describe('jekyllized:app', function() { '.jscsrc', '.gitignore', '.gitattributes', + '.bowerrc', + 'bower.json', 'package.json', 'gulpfile.babel.js', + 'README.md', '_config.yml', '_config.build.yml', 'Gemfile' diff --git a/test/bower.js b/test/bower.js new file mode 100644 index 0000000..e275275 --- /dev/null +++ b/test/bower.js @@ -0,0 +1,36 @@ +'use strict'; + +var path = require ('path'); +var assert = require('yeoman-assert'); +var helpers = require('yeoman-generator').test; + +describe('jekyllized:bower', function() { + before(function(done) { + this.options = { + projectName: 'jekyllized', + authorName: 'Ola Nordmann', + authorEmail: 'ola.nordmann@gmail.com' + }; + helpers.run(path.join(__dirname, '../generators/bower')) + .inDir(path.join(__dirname, 'tmp/bower')) + .withOptions(this.options) + .on('end', done); + }); + + it('creates .bowerrc', function() { + assert.file('.bowerrc'); + }); + + it('creates bower.json', function() { + assert.file('bower.json'); + }); + + it('bower.json contains correct info', function() { + var expected = [ + ['bower.json', '"name": "jekyllized"'], + ['bower.json', '"Ola Nordmann "'] + ]; + + assert.fileContent(expected); + }); +}); diff --git a/test/gulp.js b/test/gulp.js index 048546a..cb13be1 100644 --- a/test/gulp.js +++ b/test/gulp.js @@ -25,6 +25,7 @@ describe('jekyllized:gulp', function() { var expected = [ ['package.json', '"babel": "^5.6.8"'], ['package.json', '"browser-sync": "^2.7.12"'], + ['package.json', '"bower": "^1.4.1"'], ['package.json', '"del": "^1.1.1"'], ['package.json', '"gulp": "git://github.com/gulpjs/gulp.git#4.0"'], ['package.json', '"gulp-autoprefixer": "^2.0.0"'],