UNPKG

generator-bitch

Version:

A simple generator (for Yeoman) to scaffolding web applications, just frontend stack

277 lines (232 loc) 6.46 kB
'use strict' var _yeomanGenerator = require('yeoman-generator') var _path = require('path') var _path2 = _interopRequireDefault(_path) var _mkdirp = require('mkdirp') var _mkdirp2 = _interopRequireDefault(_mkdirp) var _underscore = require('underscore.string') function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } module.exports = _yeomanGenerator.Base.extend({ constructor: constructor, applicationNameParam: applicationNameParam, viewEngineParam: viewEngineParam, preprocessorParam: preprocessorParam, appFrameworkParam: appFrameworkParam, frameworkModulesParam: frameworkModulesParam, angularRouteParam: angularRouteParam, angularTest: angularTest, common: common, gulp: gulp, bower: bower, sources: sources, views: views, templates: templates, styles: styles, angular: angular, scripts: scripts, publicDir: publicDir, install: install }) function constructor() { _yeomanGenerator.Base.apply(this, arguments) } function applicationNameParam() { var _this = this var done = this.async() var prompt = { type: 'input', name: 'applicationName', message: 'application name', default: _path2.default.basename(process.cwd()) } this.prompt(prompt, function (data) { _this.applicationName = data.applicationName _this.applicationSlug = (0, _underscore.slugify)(_this.applicationName) done() }) } function viewEngineParam() { var _this2 = this var done = this.async() var prompt = { type: 'list', name: 'viewEngine', message: 'select template view you would like to use', default: 'pug', choices: ['pug', 'ejs'] } this.prompt(prompt, function (data) { _this2.viewEngine = data.viewEngine done() }) } function preprocessorParam() { var _this3 = this var done = this.async() var prompt = { type: 'list', name: 'preprocessor', message: 'select css preprocessor you would like to use', default: 'sass', choices: ['sass', 'less', 'stylus'] } this.prompt(prompt, function (data) { _this3.preprocessor = data.preprocessor var extname = { sass: 'scss', less: 'less', stylus: 'styl' } _this3.extPreprocessor = extname[data.preprocessor] done() }) } function appFrameworkParam() { var _this4 = this var done = this.async() var prompt = { type: 'list', name: 'appFramework', message: 'select the javascript framework you would like to use', default: 'angular', choices: ['angular', 'none'] } this.prompt(prompt, function (data) { _this4.appFramework = data.appFramework done() }) } function frameworkModulesParam() { var _this5 = this if (this.appFramework === 'angular') { (function () { var done = _this5.async() _this5.ngAnimate = false _this5.ngCookies = false _this5.ngResource = false _this5.ngSanitize = false _this5.ngTouch = false var prompt = { type: 'checkbox', name: 'frameworkModules', message: 'chich modules would you like to include', choices: [{ value: 'ngAnimate', name: 'ngAnimate', checked: true }, { value: 'ngCookies', name: 'ngCookies', checked: true }, { value: 'ngResource', name: 'ngResource', checked: true }, { value: 'ngSanitize', name: 'ngSanitize', checked: true }, { value: 'ngTouch', name: 'ngTouch', checked: true }] } _this5.prompt(prompt, function (data) { _this5.frameworkModules = data.frameworkModules for (var key in _this5.frameworkModules) { _this5[_this5.frameworkModules[key]] = true } done() }) })() } } function angularRouteParam() { var _this6 = this if (this.appFramework === 'angular') { (function () { var done = _this6.async() var prompt = { type: 'list', name: 'angularRoute', message: 'select how you want route angular', default: 'uiRouter', choices: ['uiRouter', 'ngRoute', 'none'] } _this6.prompt(prompt, function (data) { _this6.angularRoute = data.angularRoute _this6.angularRouteDirective = data.angularRoute === 'uiRouter' ? 'ui-view' : 'ng-view' done() }) })() } } function angularTest() { if (this.appFramework === 'angular') { this.sourceRoot(__dirname + '/templates/karma', this) this.directory('.', '.') } } function common() { this.sourceRoot(__dirname + '/templates/common', this) this.directory('.', '.') } function gulp() { this.sourceRoot(__dirname + '/templates/gulp', this) this.directory('.', '.') this.sourceRoot(__dirname + '/templates/tasks', this) this.directory('.', './tasks') } function bower() { this.sourceRoot(__dirname + '/templates/bower', this) this.directory('.', '.') } function sources() { (0, _mkdirp2.default)('sources/imgs') (0, _mkdirp2.default)('sources/styles/components') (0, _mkdirp2.default)('sources/sprites') if (this.appFramework !== 'none') { (0, _mkdirp2.default)('sources/' + this.appFramework) } } function views() { this.sourceRoot(__dirname + '/templates/views/' + this.viewEngine, this) this.directory('.', 'sources/views') } function templates() { if (this.appFramework !== 'angular') { this.fs.delete('./tasks/templates.js') } } function styles() { this.sourceRoot(__dirname + '/templates/styles/' + this.preprocessor, this) this.directory('.', 'sources/styles') } function angular() { if (this.appFramework === 'angular') { this.sourceRoot(__dirname + '/templates/angular', this) this.directory('.', 'sources/angular') this.sourceRoot(__dirname + '/templates/angular-templates/' + this.viewEngine, this) this.directory('.', 'sources/angular') } } function scripts() { if (this.appFramework === 'none') { this.sourceRoot(__dirname + '/templates/scripts', this) this.directory('.', 'sources/scripts') } } function publicDir() { this.sourceRoot(__dirname + '/templates/public', this) this.directory('.', 'public') (0, _mkdirp2.default)('public/imgs/sprites') (0, _mkdirp2.default)('public/scripts') } function install() { this.installDependencies({ bower: true, npm: true, skipInstall: true }) }