|
@@ -1,12 +1,80 @@
|
|
|
+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 { dependencies, devDependencies, name, version } from "../package.json";
|
|
|
|
|
|
-const fileListTotal: number[] = [];
|
|
|
+
|
|
|
+const root: string = process.cwd();
|
|
|
|
|
|
|
|
|
- * @description 获取指定文件夹中所有文件的总大小
|
|
|
+ * @description 根据可选的路径片段生成一个新的绝对路径
|
|
|
+ * @param dir 路径片段,默认`build`
|
|
|
+ * @param metaUrl 模块的完整`url`,如果在`build`目录外调用必传`import.meta.url`
|
|
|
*/
|
|
|
-export const getPackageSize = options => {
|
|
|
+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, dependencies, devDependencies },
|
|
|
+ lastBuildTime: dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss")
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+const warpperEnv = (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;
|
|
@@ -32,3 +100,5 @@ export const getPackageSize = options => {
|
|
|
files.length === 0 && callback(0);
|
|
|
});
|
|
|
};
|
|
|
+
|
|
|
+export { root, pathResolve, alias, __APP_INFO__, warpperEnv, getPackageSize };
|