slush-lucas-vue2
Version:
A lucas generator.
146 lines (136 loc) • 3.44 kB
JavaScript
/**
+ ---------------------------------------- +
+ 版权所有2016年,UED团队webpack构建工具 v0.01
+ Author: luzhichao
+ QQ: 190135180
+ Mail: luzhichao@social-touch.com
+ Date: 2016-09-06 10:00:00
+ ---------------------------------------- +
+ Last Modified by: luzhichao
+ Last Modified time: 2016-09-06 10:00:00
+ ---------------------------------------- +
**/
'use strict';
/**
* 模块加载
* @name 加载本地模块
* @param gulp 构建模块
* @param install gulp-install模块
* @param conflict gulp-conflict模块
* @param rename gulp-rename模块
* @param template gulp-template模块
* @param inquirer 询问模块
* @param version 版本号
*/
var gulp = require('gulp')
var install = require('gulp-install')
var conflict = require('gulp-conflict')
var rename = require('gulp-rename')
var template = require('gulp-template')
var inquirer = require('inquirer')
var version = require('lucas').version
/**
* CSS预处理器
* @name CSS预处理器
* @param Only CSS 默认样式
* @param Sass Sass预处理
* @param Less Less预处理
* @param PostCSS PostCSS预处理
*/
var CssChoices = [
{name: 'Only CSS', value: ''},
{name: 'Sass', value: 'sass'},
{name: 'Less', value: 'less'}
]
if (version < 1) {
CssChoices.push({name: 'PostCSS', value: 'postcss'})
}
/* 询问设置 */
gulp.task('default', function (done) {
inquirer.prompt([
{
type: 'input',
name: 'name',
message: '输入项目名称-英文',
default: getNameProposal()
},
{
type: 'input',
name: 'description',
message: '输入项目描述-英文',
default: 'vue项目.'
},
{
type: 'confirm',
name: 'private',
message: '是否设为私有的?',
default: true
},
{
type: 'confirm',
name: 'devServer',
message: '是否需要开发服务器?',
default: true
},
{
type: 'list',
name: 'csstype',
message: '请选择CSS的预处理器?',
default: '',
choices: CssChoices
},
{
type: 'confirm',
name: 'unit',
message: '是否需要单元测试 (Karma + Mocha)?',
default: true
},
{
type: 'input',
name: 'license',
message: 'license',
default: 'ISC'
},
{
type: 'confirm',
name: 'moveon',
message: '继续?'
}
],
/* 设置文件安装项目结构 */
function (answers) {
if (!answers.moveon) {
return done()
}
answers.nextLucas = version > 0
var filesPath = [__dirname + '/template/**']
if (!answers.unit) {
filesPath = filesPath.concat([
'!' + __dirname + '/template/karma.conf.js',
'!' + __dirname + '/template/test/**'
])
}
gulp.src(filesPath, { dot: true })
.pipe(template(answers))
.pipe(rename(function (file) {
if (file.basename[0] === '_') {
file.basename = '.' + file.basename.slice(1)
}
}))
.pipe(conflict('./'))
.pipe(gulp.dest('./'))
.pipe(install())
.on('end', function () {
done()
})
.resume()
})
})
function getNameProposal () {
var path = require('path')
try {
return require(path.join(process.cwd(), 'package.json')).name
} catch (e) {
return path.basename(process.cwd())
}
}