UNPKG

2.88 kBPlain TextView Raw
1import * as fs from "fs-extra";
2import * as path from "path";
3import {LibraryPackageBuilder} from "../builders/LibraryPackageBuilder";
4import {ILibraryPackageConfig, IProjectConfig} from "../commons/IProjectConfig";
5import {ServerPackageBuilder} from "../builders/ServerPackageBuilder";
6import {ClientPackageBuilder} from "../builders/ClientPackageBuilder";
7
8export async function publishAsync(argv: { config?: string; package?: string; env?: any }): Promise<void> {
9 process.env.NODE_ENV = "production";
10
11 /*const packageConfig = fs.readJsonSync(path.resolve(process.cwd(), "package.json"));
12 const newVersion = semver.inc(packageConfig.version, "patch")!;
13 child_process.spawnSync("yarn", ["version", "--new-version", newVersion], {
14 shell: true,
15 stdio: "inherit"
16 });*/
17 /*child_process.spawnSync("npm", ["version", "patch", "--git-tag-version", "false"], {
18 shell: true,
19 stdio: "inherit"
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 // tslint:disable-next-line
30 require("ts-node/register");
31 Object.assign(process.env, argv.env);
32 }
33
34 // tslint:disable-next-line:no-eval
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}