123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import dayjs from "dayjs";
- import { readdir, stat } from "node:fs";
- import { fileURLToPath } from "node:url";
- import { dirname, resolve } from "node:path";
- import { sum, formatBytes } from "@pureadmin/utils";
- import {
- name,
- version,
- engines,
- dependencies,
- devDependencies
- } from "../package.json";
- const root: string = process.cwd();
- const pathResolve = (dir = ".", metaUrl = import.meta.url) => {
-
- const currentFileDir = dirname(fileURLToPath(metaUrl));
-
- const buildDir = resolve(currentFileDir, "build");
-
- const resolvedPath = resolve(currentFileDir, dir);
-
- if (resolvedPath.startsWith(buildDir)) {
-
- return fileURLToPath(metaUrl);
- }
-
- return resolvedPath;
- };
- const alias: Record<string, string> = {
- "@": pathResolve("../src"),
- "@build": pathResolve()
- };
- const __APP_INFO__ = {
- pkg: { name, version, engines, dependencies, devDependencies },
- lastBuildTime: dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss")
- };
- const wrapperEnv = (envConf: Recordable): ViteEnv => {
-
- const ret: ViteEnv = {
- VITE_PORT: 8848,
- VITE_PUBLIC_PATH: "",
- VITE_ROUTER_HISTORY: "",
- VITE_CDN: false,
- VITE_HIDE_HOME: "false",
- VITE_COMPRESSION: "none"
- };
- for (const envName of Object.keys(envConf)) {
- let realName = envConf[envName].replace(/\\n/g, "\n");
- realName =
- realName === "true" ? true : realName === "false" ? false : realName;
- if (envName === "VITE_PORT") {
- realName = Number(realName);
- }
- ret[envName] = realName;
- if (typeof realName === "string") {
- process.env[envName] = realName;
- } else if (typeof realName === "object") {
- process.env[envName] = JSON.stringify(realName);
- }
- }
- return ret;
- };
- const fileListTotal: number[] = [];
- const getPackageSize = options => {
- const { folder = "dist", callback, format = true } = options;
- readdir(folder, (err, files: string[]) => {
- if (err) throw err;
- let count = 0;
- const checkEnd = () => {
- ++count == files.length &&
- callback(format ? formatBytes(sum(fileListTotal)) : sum(fileListTotal));
- };
- files.forEach((item: string) => {
- stat(`${folder}/${item}`, async (err, stats) => {
- if (err) throw err;
- if (stats.isFile()) {
- fileListTotal.push(stats.size);
- checkEnd();
- } else if (stats.isDirectory()) {
- getPackageSize({
- folder: `${folder}/${item}/`,
- callback: checkEnd
- });
- }
- });
- });
- files.length === 0 && callback(0);
- });
- };
- export { root, pathResolve, alias, __APP_INFO__, wrapperEnv, getPackageSize };
|