t-comm
Version:
专业、稳定、纯粹的工具库
102 lines (99 loc) • 2.64 kB
JavaScript
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 };