bili-sapp-cli
Advanced tools
Comparing version 0.0.9 to 0.0.10
100
index.js
#!/usr/bin/env node | ||
var program = require('commander'); | ||
var download = require('download'); | ||
var ora = require('ora'); | ||
var info = require('./package.json'); | ||
var fs = require('fs'); | ||
var path = require('path'); | ||
var projectTpl = 'http://172.16.33.203/template.zip'; | ||
const program = require('commander'); | ||
const download = require('download'); | ||
const ora = require('ora'); | ||
const info = require('./package.json'); | ||
const fs = require('fs'); | ||
const path = require('path'); | ||
const projectTpl = 'http://172.16.33.203/template.zip'; | ||
const express = require('express'); | ||
const copyDir = require('copy-dir'); | ||
const APP_TEMPLATE = path.join(__dirname, 'app-template'); | ||
const PAGE_TEMPLATE = path.join(__dirname, 'page-template'); | ||
function copyApp(from, to) { | ||
fs.copyFileSync(path.join(APP_TEMPLATE, from), to); | ||
} | ||
program.version(info.version, '-v, --version'); | ||
@@ -15,6 +24,9 @@ | ||
.command('init <project-name>') | ||
.description('generate a new project from template') | ||
.description('使用模板创建新项目') | ||
.action(function (projectName) { | ||
var spinner = ora('Downloading template ...').start(); | ||
const spinner = ora('Downloading template ...').start(); | ||
download(projectTpl, projectName, {extract: true}).then(function () { | ||
copyApp('sapprc.json', path.join('.', projectName, '.sapprc')); | ||
copyApp('babelrc.json', path.join('.', projectName, '.babelrc')); | ||
copyApp('gitignore', path.join('.', projectName, '.gitignore')); | ||
spinner.stop(); | ||
@@ -30,49 +42,39 @@ console.log(' Generated "%s".\n', projectName); | ||
function copyTemplate(from, to) { | ||
from = path.join(__dirname, 'page-template', from); | ||
fs.writeFileSync(to, fs.readFileSync(from, 'utf-8'), 'utf-8'); | ||
} | ||
function copyImage(from, to) { | ||
from = path.join(__dirname, 'page-template', from); | ||
fs.writeFileSync(to, fs.readFileSync(from, 'binary'), 'binary'); | ||
} | ||
function mkdir(path, fn) { | ||
fs.mkdir(path, function () { | ||
fn && fn(); | ||
}); | ||
} | ||
var PATH = '.'; | ||
program | ||
.command('page <page-name>') | ||
.description('create template page dir and files') | ||
.action(function (pageName) { | ||
var pageDir = path.join(PATH, pageName); | ||
fs.exists(pageDir, function (exists) { | ||
if (!exists) { | ||
mkdir(pageDir, function () { | ||
copyTemplate('index.vue', path.join(pageDir, 'index.vue')); | ||
mkdir(path.join(pageDir, 'vue'), function () { | ||
copyTemplate(path.join('vue', 'MyComponent.vue'), path.join(pageDir, 'vue', 'MyComponent.vue')); | ||
}); | ||
mkdir(path.join(pageDir, 'style'), function () { | ||
copyTemplate(path.join('style', 'index.less'), path.join(pageDir, 'style', 'index.less')); | ||
}); | ||
mkdir(path.join(pageDir, 'js'), function () { | ||
copyTemplate(path.join('js', 'index.js'), path.join(pageDir, 'js', 'index.js')); | ||
}); | ||
mkdir(path.join(pageDir, 'img'), function () { | ||
}); | ||
console.log('created page "%s"', pageName); | ||
.description('新建page目录结构') | ||
.action(pageName => { | ||
if (fs.existsSync('.sapprc')) { | ||
const pageDir = path.join('.', 'src', 'pages', pageName); | ||
if (!fs.existsSync(pageDir)) { | ||
copyDir(PAGE_TEMPLATE, pageDir, () => { | ||
const appJson = path.join('src', 'app.json'); | ||
const appConfig = JSON.parse(fs.readFileSync(appJson, 'utf8')); | ||
appConfig.pages.push('/pages/' + pageName); | ||
fs.writeFileSync(appJson, JSON.stringify(appConfig, null, ' '), 'utf8'); | ||
console.log(pageName + ' 创建成功'); | ||
}); | ||
} else { | ||
console.log(pageDir + '文件夹已存在!'); | ||
console.log(pageName + ' 文件夹已存在'); | ||
} | ||
}); | ||
} else { | ||
console.log('当前目录不是小程序项目根目录'); | ||
} | ||
}); | ||
program | ||
.command('serve') | ||
.description('开启真机调试服务') | ||
.action(directory => { | ||
const projectRoot = path.resolve('.'); | ||
if (fs.existsSync(path.join(projectRoot, '.sapprc'))) { | ||
const app = express(); | ||
app.get('/', (req, res) => res.send('Small App Static Server')); | ||
app.use(express.static(path.join(projectRoot, 'zip'))); | ||
app.listen(3000, () => console.log('真机调试服务正在运行,可以用手机扫码调试构建出来的安装包啦')); | ||
} else { | ||
console.log('当前目录不是小程序项目根目录'); | ||
} | ||
}); | ||
program.parse(process.argv); |
{ | ||
"name": "bili-sapp-cli", | ||
"version": "0.0.9", | ||
"version": "0.0.10", | ||
"description": "Bilibili Small App Cli", | ||
@@ -23,5 +23,7 @@ "main": "index.js", | ||
"commander": "^2.15.1", | ||
"copy-dir": "^0.4.0", | ||
"download": "^7.0.0", | ||
"express": "^4.16.3", | ||
"ora": "^2.1.0" | ||
} | ||
} |
4415
10
86
5
+ Addedcopy-dir@^0.4.0
+ Addedexpress@^4.16.3
+ Addedaccepts@1.3.8(transitive)
+ Addedarray-flatten@1.1.1(transitive)
+ Addedbody-parser@1.20.3(transitive)
+ Addedbytes@3.1.2(transitive)
+ Addedcall-bind-apply-helpers@1.0.1(transitive)
+ Addedcall-bound@1.0.3(transitive)
+ Addedcontent-type@1.0.5(transitive)
+ Addedcookie@0.7.1(transitive)
+ Addedcookie-signature@1.0.6(transitive)
+ Addedcopy-dir@0.4.0(transitive)
+ Addeddebug@2.6.9(transitive)
+ Addeddepd@2.0.0(transitive)
+ Addeddestroy@1.2.0(transitive)
+ Addeddunder-proto@1.0.1(transitive)
+ Addedee-first@1.1.1(transitive)
+ Addedencodeurl@1.0.22.0.0(transitive)
+ Addedes-define-property@1.0.1(transitive)
+ Addedes-errors@1.3.0(transitive)
+ Addedes-object-atoms@1.1.1(transitive)
+ Addedescape-html@1.0.3(transitive)
+ Addedetag@1.8.1(transitive)
+ Addedexpress@4.21.2(transitive)
+ Addedfinalhandler@1.3.1(transitive)
+ Addedforwarded@0.2.0(transitive)
+ Addedfresh@0.5.2(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedget-intrinsic@1.2.7(transitive)
+ Addedget-proto@1.0.1(transitive)
+ Addedgopd@1.2.0(transitive)
+ Addedhas-symbols@1.1.0(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedhttp-errors@2.0.0(transitive)
+ Addediconv-lite@0.4.24(transitive)
+ Addedipaddr.js@1.9.1(transitive)
+ Addedmath-intrinsics@1.1.0(transitive)
+ Addedmedia-typer@0.3.0(transitive)
+ Addedmerge-descriptors@1.0.3(transitive)
+ Addedmethods@1.1.2(transitive)
+ Addedmime@1.6.0(transitive)
+ Addedmime-db@1.52.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedmkdir-p@0.0.7(transitive)
+ Addedms@2.0.02.1.3(transitive)
+ Addednegotiator@0.6.3(transitive)
+ Addedobject-inspect@1.13.4(transitive)
+ Addedon-finished@2.4.1(transitive)
+ Addedparseurl@1.3.3(transitive)
+ Addedpath-to-regexp@0.1.12(transitive)
+ Addedproxy-addr@2.0.7(transitive)
+ Addedqs@6.13.0(transitive)
+ Addedrange-parser@1.2.1(transitive)
+ Addedraw-body@2.5.2(transitive)
+ Addedsafer-buffer@2.1.2(transitive)
+ Addedsend@0.19.0(transitive)
+ Addedserve-static@1.16.2(transitive)
+ Addedsetprototypeof@1.2.0(transitive)
+ Addedside-channel@1.1.0(transitive)
+ Addedside-channel-list@1.0.0(transitive)
+ Addedside-channel-map@1.0.1(transitive)
+ Addedside-channel-weakmap@1.0.2(transitive)
+ Addedstatuses@2.0.1(transitive)
+ Addedtoidentifier@1.0.1(transitive)
+ Addedtype-is@1.6.18(transitive)
+ Addedunpipe@1.0.0(transitive)
+ Addedutils-merge@1.0.1(transitive)
+ Addedvary@1.1.2(transitive)