generator-jdm
Version:
jd mobile project generator
117 lines (107 loc) • 3.25 kB
JavaScript
/**
* Created by willhu on 15/9/11.
*/
;
var yeoman = require('yeoman-generator');
var mkdirp = require('mkdirp');
var yosay = require('yosay');
var fs = require('fs');
var jdmGenerator = yeoman.generators.Base.extend({
initializing: function () {
this.pkg = require('../package.json');
},
// 用户输入部分
prompting: function() {
var done = this.async();
this.log(yosay('Welcome to JDM!'));
this.prompt(
[{
type: 'input',
name: 'appName',
message: 'What\' your app name?'
},
/*{
type: 'confirm',
name: 'addJdMobi',
message: 'Would you like to include jdMobi?',
default: true
}*/],
function(answers) {
this.appName = answers.appName;
done();
}.bind(this));
},
// 复制配置文件
configuring: function() {
var context = {
appName: this.appName
};
this.template('package.json', 'package.json', context);
this.template('bower.json', 'bower.json');
this.template('gulpfile.js', 'gulpfile.js');
this.template('jshintrc', '.jshintrc');
this.template('gitignore', '.gitignore');
this.template('bowerrc', '.bowerrc');
},
// npm bower install
install: function() {
var done = this.async();
this.installDependencies({
bower: true,
npm: true,
callback: function () {
console.log('NPM install ready!');
done();
}
});
},
// 创建文件夹
createFolders: function() {
mkdirp('src');
mkdirp('src/scss');
mkdirp('src/css');
mkdirp('src/img');
mkdirp('src/img/sprite');
mkdirp('src/js');
mkdirp('src/html');
mkdirp('src/component');
mkdirp('tasks');
mkdirp('dist');
},
// 写文件
writing: function() {
var _self = this;
var tasksPath = this.sourceRoot() + '/tasks/';
function dir(ff) {
fs.readdir(ff, function(err, files) {
if (err) {
console.log('err');
return;
};
files.forEach(function(file) {
fs.stat(ff + file, function(err, stat) {
if(err) {
console.log('readdir error');
return;
}
if (stat.isDirectory()) {
dir(ff+file);
} else {
var item = 'tasks/' + file;
_self.copy(item, item);
}
})
})
})
}
dir(tasksPath);
},
// 解决冲突
conflicts: function() {
},
// end
end: function() {
this.log(yosay('jdm install complete, '+ '\n' +' you can beign ' + this.appName + ' project!'));
}
});
module.exports = jdmGenerator;