UNPKG

mps-deploy

Version:

miniprogram`s (weapp) batch deployment tool

118 lines (109 loc) 3.74 kB
const fs = require("fs"); const path = require("path"); function readJSON(filePath) { let packageJson = fs.readFileSync(filePath); let json = JSON.parse(packageJson.toString()); return recombination(json); } function recombination(json) { try { let packageMsg = fs.readFileSync(`${json.project}/mps-deploy-version.json`); let version = JSON.parse(packageMsg.toString()); let prod = []; json.deploy.forEach((item) => { prod.push({ project: json.project, type: json.type, desc: version.desc, version: version.version, es6: json.es6, name: item.name, appid: item.appid, key: item.key, }); }); return prod; } catch (err) { console.log(`Error: ${err}`) } } class Log { static writeLog(time, txt) { let isHas = this.isHasFile("C:", "mps-deploy-log"); if (!isHas) { fs.mkdir(`C:/mps-deploy-log`, (err) => { if (err) { console.error("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); console.error("Mps cannot create log file on C disk"); console.error("Please open disk file read-write permission and run as administrator"); console.error("Error: " + err); console.error("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); return; } }); } else { this.write(time, txt); } } static isHasFile(path, file) { let fileDir = fs.readdirSync(path); let fileArray = []; fileDir.forEach((item) => { fileArray.push(item); }); return fileArray.indexOf(file) === -1 ? false : true; } static write(time, txt) { let isHas = this.isHasFile("C:/mps-deploy-log", `mps-deploy${time}.log`); if (isHas) { fs.appendFileSync(`C:/mps-deploy-log/mps-deploy${time}.log`, txt); } else { fs.writeFileSync(`C:/mps-deploy-log/mps-deploy${time}.log`, txt); } } } function getPackageSize(address) { let packageMsg = fs.readFileSync(`${address}/app.json`); let app = JSON.parse(packageMsg.toString()); let countSize = getDirSize(address) let subPackages = {}; let indexPage = app.pages[0]; if (app.hasOwnProperty("subPackages")) { app.subPackages.forEach((item) => { subPackages[item.root] = getDirSize(`${address}/${item.root}`) }); } return { countSize, subPackages, indexPage }; } function getDirSize(dir, size = 0) { let stats = fs.statSync(dir); if (stats.isFile()) { size += stats.size return size; } let readRes = fs.readdirSync(dir); if (readRes.length === 0) { return size; } for (let i = 0; i < readRes.length; i++) { size = getDirSize(path.join(dir, readRes[i]), size) if (i === readRes.length - 1) { return size; } } } function checkPackageSize(count = 0, subPackages = {}) { for (let key in subPackages) { if (subPackages[key] >= 2097152) { return {isPass: false, msg: 'The size of a single package cannot exceed 2MB'} } } if (count >= (Object.keys(subPackages).length + 1) * 1048576) { return {isPass: false, msg: `Package source exceed max limit ${Object.keys(subPackages).length + 1}MB`} } if (count >= 16 * 1048576) { return {isPass: false, msg: `Package source exceed max limit 16MB`} } return {isPass: true} } module.exports = { readJSON, Log, recombination, getPackageSize, checkPackageSize };