UNPKG

2.84 kBJavaScriptView Raw
1#!/usr/bin/env node
2var program = require('commander')
3var inquirer = require('inquirer')
4var exists = require('fs').existsSync
5var path = require('path')
6var fs = require('fs')
7var mkdirp = require('mkdirp');
8var logger = require('../lib/logger');
9
10const __root = process.cwd();
11
12
13/**
14 * Usage.
15 */
16
17program
18 .version('0.0.1')
19 // .usage('[options] <file ...>')
20 .usage('<-i project-name>')
21 .usage('<-p page-name>')
22 .option('-i, --init [value]','创建初始化项目')
23 .option('-p, --page <items>','创建页面名称,自动生成目录和对应的.wxml,.wxss和.js文件',list)
24 .parse(process.argv);
25
26var page = program.page;
27var init = program.init;
28
29if(page && ( page !== undefined ) && (page.length >0) ){
30 inquirer.prompt([{
31 type:"list",
32 message:"选择在哪个项目创建页面",
33 choices:['bus','train'],
34 name:'dirname'
35 }],function(answers){
36 console.log(answers)
37 if(answers.dirname){
38 createPage(answers.dirname,program.page);
39 }
40 })
41}
42
43if( init ){
44 createProject(init);
45}
46
47
48
49
50function list(value){
51 return value.split(',')
52}
53
54function createPage(dirName,pages){
55
56 if(pages == undefined) return;
57
58 if(pages.length === 0){
59 logger.fatal('请输入文件名');
60 }
61 var projectDir = __root + '/pages/'+ dirName +'/';
62 for(var index in pages){
63
64 var page = pages[index];
65 var pageDir = projectDir + page;
66 if( exists( pageDir ) ){
67 logger.fatal('已存在目录' + pageDir)
68 }else{
69
70 console.log(pageDir)
71 mkdirp(pageDir,function(err){
72 if(err) {throw err; return}
73 else{
74 logger.success('成功创建'+ page +'/')
75 fs.open(pageDir+'/'+page+'.wxml','w',function(){
76 console.log('成功创建 ' + page + '.wxml 在目录 ' + pageDir)
77
78 })
79 fs.open(pageDir+'/'+page+'.wxss','w',function(){
80 console.log('成功创建 ' + page + '.wxss 在目录 ' + pageDir)
81 })
82 fs.open(pageDir+'/'+page+'.js','w',function(err){
83 if (err) throw err;
84 fs.writeFile(pageDir+'/'+page+'.js',"Page({data:{},onLoad(){}})",'utf8',function(err){
85
86 })
87 console.log('成功创建 ' + page + '.js 在目录 ' + pageDir)
88 })
89 }
90 writeToPkg(dirName,page);
91 })
92 }
93 }
94}
95
96function createProject(name){
97 // todos
98 console.log('todos:创建项目' + name)
99}
100
101function writeToPkg(path,page){
102
103 var conf_path = __root + '/app.json';
104 fs.readFile(conf_path,function(err,data){
105 if(err) throw err;
106 var pkg = JSON.parse(data.toString());
107 if(pkg.pages != undefined){
108
109 var newPath = 'pages/' + path + '/' + page + '/' + page;
110
111 if(pkg.pages.indexOf(newPath) <= -1){
112 pkg.pages.push( newPath );
113 fs.writeFile(conf_path, JSON.stringify(pkg), function(err){
114 if(err) throw err;
115 else {
116 console.log("新页面已写入配置文件");
117 process.exit(0)
118 }
119 })
120 }
121 }else{
122 console.log('请先创建pages字段');
123 }
124 })
125}
\No newline at end of file