UNPKG

taitan

Version:

小程序开发辅助工具

110 lines (96 loc) 3.1 kB
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); }