taitan
Version:
小程序开发辅助工具
110 lines (96 loc) • 3.1 kB
JavaScript
const fs = require('fs')
const path = require('path')
const {readFileSync} = require('../utils')
const config = require('../config')
const chalk = require('chalk')
exports.createProject = function(projectName){
let configPath = exports.getProjectListConfigPath()
const file = readFileSync(configPath)
if(exports.hasProject(config.dir)){
console.log('项目已存在')
return false
}else{
file.json.push({
projectName,
dir:config.dir
})
exports.setProjectList(file.json)
return true
}
}
exports.hasProject = function(dir){
let configPath = exports.getProjectListConfigPath()
const file = readFileSync(configPath)
return !!(file.json.find(i=>i.dir === dir))
}
exports.getProjectList = function(){
let configPath = exports.getProjectListConfigPath()
const file = readFileSync(configPath)
return file.json
}
exports.getProjectListConfigPath = function(){
let listPath = path.resolve(__dirname,'../project.list.json')
if(!fs.existsSync(listPath)){
fs.writeFileSync(listPath,JSON.stringify([]))
}
return listPath
}
exports.setProjectList = function(list){
let configPath = exports.getProjectListConfigPath()
fs.writeFileSync(configPath,JSON.stringify(list,null,'\t'))
}
exports.getProjectByDir = function(dir){
let project = exports.getProjectList().find(item=>item.dir === dir)
if(!project){
console.log(chalk.red('当前目录不是小程序小柠檬'))
return
}
str = fs.readFileSync(project.dir+'/app.json',{encoding:'utf-8'})
project.appInfo = JSON.parse(str)
if(project.appInfo.subPackages){
project.appInfo.pages = project.appInfo.subPackages.reduce((total,current)=>{
let currentSubPages = []
if(current.pages){
currentSubPages = current.pages.reduce((tp,cp)=>{
tp.push(`${current.root}/${cp}`)
return tp
},[])
}
total = total.concat(currentSubPages)
return total
},[])
}
return project
}
exports.includePage = function(project,page){
let savePages = project.savePages || []
return !!savePages.find(item=>(item.page === page.page && item.query===page.query))
}
exports.setProjectByDir = function(dir,project){
let projectList = exports.getProjectList()
let list = projectList.map((item)=>{
if(item.dir === dir){
return project
}
return item
})
exports.setProjectList(list)
}
exports.logPageList = function(list){
if(!list.length) return
let str = list.reduce((total, current) => {
return `${total}\n${chalk.green(current.pageName)}\npath:${current.page}\nquery:${current.query}\n${chalk.green("------------------------")}\n`;
}, "");
//输出到控制台
console.log(`\n${chalk.yellow('》〉》〉》本地保存页面列表《〈《〈《')}\n${str}`);
}
exports.logProjectList = function(){
let list = exports.getProjectList();
let res = list.reduce((total, current) => {
return `${total}\n${chalk.green(current.projectName)}\n${
current.dir
}\n${chalk.green("------------------------")}\n`;
}, "");
//输出到控制台
console.log(res);
}