1 | import * as fs from "fs-extra";
|
2 | import * as path from "path";
|
3 | import {LibraryPackageBuilder} from "../builders/LibraryPackageBuilder";
|
4 | import {ILibraryPackageConfig, IProjectConfig} from "../commons/IProjectConfig";
|
5 | import {ServerPackageBuilder} from "../builders/ServerPackageBuilder";
|
6 | import {ClientPackageBuilder} from "../builders/ClientPackageBuilder";
|
7 |
|
8 | export async function publishAsync(argv: { config?: string; package?: string; env?: any }): Promise<void> {
|
9 | process.env.NODE_ENV = "production";
|
10 |
|
11 | |
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | |
18 |
|
19 |
|
20 |
|
21 |
|
22 | let configFilePath = argv.config;
|
23 | configFilePath = configFilePath ? path.resolve(process.cwd(), configFilePath)
|
24 | : fs.existsSync(path.resolve(process.cwd(), "simplism.ts")) ? path.resolve(process.cwd(), "simplism.ts")
|
25 | : fs.existsSync(path.resolve(process.cwd(), "simplism.js")) ? path.resolve(process.cwd(), "simplism.js")
|
26 | : path.resolve(process.cwd(), "simplism.json");
|
27 |
|
28 | if (path.extname(configFilePath) === ".ts") {
|
29 |
|
30 | require("ts-node/register");
|
31 | Object.assign(process.env, argv.env);
|
32 | }
|
33 |
|
34 |
|
35 | const projectConfig = eval("require(configFilePath)") as IProjectConfig;
|
36 |
|
37 | const promiseList: Promise<void>[] = [];
|
38 | for (const config of projectConfig.packages.filter(item => item.type === "library" && item.publish !== false)) {
|
39 | if (!argv.package || argv.package.split(",").includes(config.name)) {
|
40 | promiseList.push(new LibraryPackageBuilder(config as ILibraryPackageConfig).publishAsync());
|
41 | }
|
42 | }
|
43 | await Promise.all(promiseList);
|
44 |
|
45 | for (const config of projectConfig.packages.filter(item => item.type !== "library" && item.publish !== undefined && item.publish !== false)) {
|
46 | if (config.type === "library") {
|
47 | }
|
48 | else if (!argv.package || argv.package.split(",").includes(config.name)) {
|
49 | if (config.type === "server") {
|
50 | await new ServerPackageBuilder({
|
51 | ...config,
|
52 | "env": {...projectConfig.env, ...config.env, ...argv.env},
|
53 | "env.production": {...projectConfig["env.production"], ...config["env.production"]}
|
54 | }).publishAsync();
|
55 | }
|
56 | else {
|
57 | await new ClientPackageBuilder({
|
58 | ...config,
|
59 | "env": {...projectConfig.env, ...config.env, ...argv.env},
|
60 | "env.production": {...projectConfig["env.production"], ...config["env.production"]}
|
61 | }).publishAsync();
|
62 | }
|
63 | }
|
64 | }
|
65 | }
|