Skip to content

Commit ad70201

Browse files
author
xiang.hu胡祥
committed
新增新城page配置
1 parent ced45ae commit ad70201

File tree

4 files changed

+96
-1
lines changed

4 files changed

+96
-1
lines changed

actions/generate-app.js

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
const mkdirp = require('mkdirp');
2+
const tplApply = require('tpl_apply');
3+
const path = require('path');
4+
const fs = require('fs');
5+
const chalk = require('chalk');
6+
const generateComponent = require('./generate-component');
7+
8+
9+
const {
10+
getDirPathAndName,
11+
spinner,
12+
} = require('../utils');
13+
14+
module.exports = (component, basePath) => new Promise((resolve) => {
15+
let {
16+
filePath
17+
} = getDirPathAndName(component, basePath);
18+
spinner.start(`${filePath} is generating......`);
19+
20+
// 判断目录是否存在
21+
let dirExists = false;
22+
23+
try {
24+
const stat = fs.statSync(filePath);
25+
dirExists = stat.isDirectory();
26+
} catch (error) { }
27+
28+
if (dirExists) {
29+
spinner.fail(chalk.red(`Unable to create ${filePath}: Folder already exists`))
30+
return resolve();
31+
}
32+
33+
// 创建文件夹
34+
mkdirp(filePath, (err) => {
35+
if (err) {
36+
console.error(err);
37+
return resolve();
38+
}
39+
// 生成main文件
40+
tplApply.tpl_apply(
41+
path.join(path.join(__dirname, '../templates/page'), 'main.tpl'),
42+
{},
43+
path.join(filePath, 'main.ts')
44+
);
45+
46+
// 新建components目录
47+
const comPath = filePath + '/components';
48+
mkdirp(comPath, (err) => {
49+
if (err) {
50+
console.error(err);
51+
return resolve();
52+
}
53+
// 生成默认app组件
54+
generateComponent('app', comPath, false, false).then(() => {
55+
spinner.succeed(`generate ${filePath} success`);
56+
resolve();
57+
});
58+
});
59+
60+
})
61+
});

index.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const generateVue = require('./actions/generate-vue');
99
const generateDirective = require('./actions/generate-directive');
1010
const generateMixin = require('./actions/generate-mixin');
1111
const generateSimpleComponent = require('./actions/generate-simple-component');
12+
const generateApp = require('./actions/generate-app');
1213

1314
/**
1415
* 根据输入配置生成对应文件路径
@@ -45,6 +46,7 @@ const CREATE_VUE_DESCRIPTION = 'create a .vue component with typescript';
4546
const CREATE_DIRECTIVE_DESCRIPTION = 'create a directive with typescript'
4647
const CREATE_MIXIN_DESCRIPTON = 'create a mixin with typescript';
4748
const CREATE_SERVICE_DESCRIPTON = 'create a service with typescript';
49+
const CREATE_PAGE_DESCRIPTON = 'create a page with typescript';
4850

4951
program
5052
.command('component <component>')
@@ -125,6 +127,19 @@ program
125127
}
126128
});
127129

130+
program
131+
.command('page <name>')
132+
.alias('p')
133+
.description(CREATE_PAGE_DESCRIPTON)
134+
.action(name => {
135+
try {
136+
let basePath = generatePath();
137+
// generateMixin(name, basePath, 'Service');
138+
generateApp(name, basePath);
139+
} catch (error) {
140+
console.error(error);
141+
}
142+
});
128143

129144
program.on('--help', () => {
130145
console.log('');
@@ -160,6 +175,10 @@ program.on('--help', () => {
160175
console.log(` $ vt service service-name`);
161176
console.log(` $ vt m path/to/service-name`);
162177
console.log('');
178+
console.log(` # ${CREATE_PAGE_DESCRIPTON}`);
179+
console.log(` $ vt page page-name`);
180+
console.log(` $ vt p path/to/page-name`);
181+
console.log('');
163182
});
164183

165184
program

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vt-cli",
3-
"version": "0.0.12",
3+
"version": "0.0.13",
44
"description": "",
55
"main": "index.js",
66
"bin": {

templates/page/main.tpl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import Vue from 'vue';
2+
import Component from 'vue-class-component';
3+
import App from './components/app';
4+
5+
Vue.config.productionTip = false;
6+
7+
// Register the router hooks with their names
8+
Component.registerHooks(['beforeRouteEnter', 'beforeRouteLeave', 'beforeRouteUpdate']);
9+
10+
11+
// tslint:disable-next-line:no-unused-expression
12+
new Vue({
13+
el: '#app',
14+
render: h => h(App),
15+
});

0 commit comments

Comments
 (0)