@fesjs/fes
Version:
一个好用的前端管理台快速开发框架
166 lines (158 loc) • 3.9 kB
JavaScript
// src/forkedDev.ts
import process3 from "process";
import pc from "picocolors";
import { yParser } from "@fesjs/utils";
// package.json
var package_default = {
name: "@fesjs/fes",
type: "module",
version: "4.0.1",
description: "\u4E00\u4E2A\u597D\u7528\u7684\u524D\u7AEF\u7BA1\u7406\u53F0\u5FEB\u901F\u5F00\u53D1\u6846\u67B6",
preferGlobal: true,
author: "qlin",
license: "MIT",
homepage: "https://github.com/WeBankFinTech/fes.js#readme",
repository: {
type: "git",
url: "git+https://github.com/WeBankFinTech/fes.js.git",
directory: "packages/fes"
},
bugs: {
url: "https://github.com/WeBankFinTech/fes.js/issues"
},
keywords: [
"\u7BA1\u7406\u7AEF",
"fes",
"fast",
"easy",
"strong"
],
exports: {
import: {
node: "./dist/node.js",
types: "./types.d.ts",
default: "./dist/browser.js"
}
},
main: "./dist/node.js",
typings: "types.d.ts",
bin: {
fes: "./bin/fes.mjs"
},
files: [
"bin",
"dist",
"types.d.ts"
],
engines: {
node: ">= 18.0.0"
},
scripts: {
watch: "tsup --watch",
build: "tsup"
},
publishConfig: {
access: "public"
},
dependencies: {
"@fesjs/compiler": "^4.0.1",
"@fesjs/preset-built-in": "^4.0.1",
"@fesjs/utils": "^4.0.1",
"fs-extra": "^11.3.1",
picocolors: "^1.1.1",
"vue-router": "^4.5.1"
},
devDependencies: {
"@types/fs-extra": "^11.0.4"
}
};
// src/serviceWithBuiltIn.ts
import { join as join2 } from "path";
import process from "process";
import { Service as CoreService } from "@fesjs/compiler";
import { resolve } from "@fesjs/utils";
import { readJSONSync } from "fs-extra/esm";
// src/utils/shared.ts
import { dirname, join } from "path";
import { fileURLToPath } from "url";
var OWNER_DIR = join(dirname(fileURLToPath(import.meta.url)), "..");
// src/serviceWithBuiltIn.ts
var Service = class extends CoreService {
constructor(opts) {
const pkg = readJSONSync(join2(OWNER_DIR, "package.json"));
process.env.FES_VERSION = pkg.version;
process.env.FES_DIR = OWNER_DIR;
super({
...opts,
presets: [resolve.sync("@fesjs/preset-built-in", {
basedir: OWNER_DIR
}), ...opts.presets || []],
plugins: [...opts.plugins || []]
});
}
};
// src/utils/getCwd.ts
import { isAbsolute, join as join3 } from "path";
import process2 from "process";
var getCwd_default = () => {
const cwd = process2.cwd();
if (process2.env.APP_ROOT) {
if (!isAbsolute(process2.env.APP_ROOT)) {
return join3(cwd, process2.env.APP_ROOT);
}
return process2.env.APP_ROOT;
}
return cwd;
};
// src/utils/getPkg.ts
import { join as join4 } from "path";
import { readJSONSync as readJSONSync2 } from "fs-extra/esm";
var getPkg_default = (dir) => {
try {
return readJSONSync2(join4(getCwd_default(), "package.json"));
} catch {
try {
return readJSONSync2(join4(dir, "package.json"));
} catch {
return void 0;
}
}
};
// src/forkedDev.ts
var args = yParser(process3.argv.slice(2));
var closed = false;
function onSignal(signal, service) {
if (closed) {
return;
}
closed = true;
service.applyPlugins({
key: "onExit",
type: service.ApplyPluginsType.event,
args: {
signal
}
});
process3.exit(0);
}
(async () => {
try {
process3.env.NODE_ENV = "development";
const service = new Service({
cwd: getCwd_default(),
pkg: getPkg_default(process3.cwd()),
fesPkg: package_default
});
await service.ready;
await service.run({
args
});
process3.once("SIGINT", () => onSignal("SIGINT", service));
process3.once("SIGQUIT", () => onSignal("SIGQUIT", service));
process3.once("SIGTERM", () => onSignal("SIGTERM", service));
} catch (e) {
console.error(pc.red(e.message));
console.error(e.stack);
process3.exit(1);
}
})();