UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

102 lines (99 loc) 2.64 kB
import fs__default from 'fs'; import path__default from 'path'; import { traverseFolder } from '../node/fs-util.mjs'; import '../fs/fs.mjs'; import '../time/time.mjs'; /** * 统计页面总数、分包数目等 * @param dist * @returns result * * @example * ```ts * getPageTotal('./dist/dev/mp-weixin') * ``` */ function getPageTotal(dist) { var _a; var appJson = path__default.resolve(dist, 'app.json'); var result = { pageTotal: 0, subPackageTotal: 0 }; if (!fs__default.existsSync(appJson)) { return result; } // eslint-disable-next-line @typescript-eslint/no-require-imports var data = require(appJson); var _b = data.pages, pages = _b === void 0 ? [] : _b; var subPackages = ((_a = data.subPackages) === null || _a === void 0 ? void 0 : _a.length) ? data.subPackages : data.subpackages || []; result.pageTotal = pages.length + subPackages.reduce(function (acc, item) { var _a; acc += ((_a = item.pages) === null || _a === void 0 ? void 0 : _a.length) || 0; return acc; }, 0); result.subPackageTotal = subPackages.length; return result; } /** * 统计组件数目、wxml大小、wxss大小、js大小等 * @param dist * @returns result * * @example * ```ts * getComponentInfo('./dist/dev/mp-weixin') * ``` */ function getComponentInfo(dist, config) { if (config === void 0) { config = { wxmlPostfix: '.wxml', wxssPostfix: '.wxss', vendorNames: ['common/vendor-1.js', 'common/vendor.js'] }; } var result = { componentTotal: 0, wxsstTotal: 0, jsTotal: 0, wxmlSizeTotal: 0, wxssSizeTotal: 0, jsSizeTotal: 0, vendorJsSize: 0 }; if (!fs__default.existsSync(dist)) { return result; } var isVendorJs = function isVendorJs(file) { var _a; return !!((_a = config.vendorNames) === null || _a === void 0 ? void 0 : _a.find(function (item) { return file.endsWith(item); })); }; try { traverseFolder(function (tPath) { var fileSize = fs__default.statSync(tPath).size; if (tPath.endsWith(config.wxmlPostfix)) { result.componentTotal += 1; result.wxmlSizeTotal += fileSize; } if (tPath.endsWith(config.wxssPostfix)) { result.wxsstTotal += 1; result.wxssSizeTotal += fileSize; } if (tPath.endsWith('.js')) { result.jsTotal += 1; result.jsSizeTotal += fileSize; } if (isVendorJs(tPath)) { result.vendorJsSize += fileSize; } }, dist); } catch (err) { console.log('traverseFolder.error: ', err); } return result; } export { getComponentInfo, getPageTotal };