alepha 0.14.3 → 0.14.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/api/audits/index.d.ts +338 -417
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/files/index.d.ts +1 -80
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/jobs/index.d.ts +156 -235
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/notifications/index.d.ts +170 -249
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/parameters/index.d.ts +266 -345
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/users/index.d.ts +755 -834
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/verifications/index.d.ts +125 -125
- package/dist/api/verifications/index.d.ts.map +1 -1
- package/dist/cli/index.d.ts +116 -20
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +212 -124
- package/dist/cli/index.js.map +1 -1
- package/dist/command/index.d.ts +6 -11
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +2 -2
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js +26 -4
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +16 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +26 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +26 -4
- package/dist/core/index.native.js.map +1 -1
- package/dist/logger/index.d.ts +1 -1
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +12 -2
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/index.d.ts +37 -173
- package/dist/orm/index.d.ts.map +1 -1
- package/dist/orm/index.js +193 -422
- package/dist/orm/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +167 -167
- package/dist/server/cache/index.d.ts +12 -0
- package/dist/server/cache/index.d.ts.map +1 -1
- package/dist/server/cache/index.js +55 -2
- package/dist/server/cache/index.js.map +1 -1
- package/dist/server/compress/index.d.ts +6 -0
- package/dist/server/compress/index.d.ts.map +1 -1
- package/dist/server/compress/index.js +36 -1
- package/dist/server/compress/index.js.map +1 -1
- package/dist/server/core/index.browser.js +2 -2
- package/dist/server/core/index.browser.js.map +1 -1
- package/dist/server/core/index.d.ts +10 -10
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +6 -3
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/links/index.d.ts +39 -39
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/security/index.d.ts +9 -9
- package/dist/server/static/index.d.ts.map +1 -1
- package/dist/server/static/index.js +4 -0
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.d.ts.map +1 -1
- package/dist/server/swagger/index.js +2 -3
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/vite/index.d.ts +101 -106
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +571 -508
- package/dist/vite/index.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/apps/AlephaCli.ts +0 -2
- package/src/cli/atoms/buildOptions.ts +88 -0
- package/src/cli/commands/build.ts +32 -69
- package/src/cli/commands/db.ts +0 -4
- package/src/cli/commands/dev.ts +16 -4
- package/src/cli/commands/gen/env.ts +53 -0
- package/src/cli/commands/gen/openapi.ts +1 -1
- package/src/cli/commands/gen/resource.ts +15 -0
- package/src/cli/commands/gen.ts +7 -1
- package/src/cli/commands/init.ts +0 -1
- package/src/cli/commands/test.ts +0 -1
- package/src/cli/commands/verify.ts +1 -1
- package/src/cli/defineConfig.ts +49 -7
- package/src/cli/index.ts +0 -1
- package/src/cli/services/AlephaCliUtils.ts +36 -25
- package/src/command/helpers/Runner.spec.ts +2 -2
- package/src/command/helpers/Runner.ts +1 -1
- package/src/command/primitives/$command.ts +0 -6
- package/src/command/providers/CliProvider.ts +1 -3
- package/src/core/Alepha.ts +42 -0
- package/src/logger/index.ts +15 -3
- package/src/mcp/transports/StdioMcpTransport.ts +1 -1
- package/src/orm/index.ts +2 -8
- package/src/queue/core/providers/WorkerProvider.spec.ts +48 -32
- package/src/server/cache/providers/ServerCacheProvider.spec.ts +183 -0
- package/src/server/cache/providers/ServerCacheProvider.ts +94 -9
- package/src/server/compress/providers/ServerCompressProvider.ts +61 -2
- package/src/server/core/helpers/ServerReply.ts +2 -2
- package/src/server/core/providers/ServerProvider.ts +11 -1
- package/src/server/static/providers/ServerStaticProvider.ts +10 -0
- package/src/server/swagger/providers/ServerSwaggerProvider.ts +5 -8
- package/src/vite/helpers/importViteReact.ts +13 -0
- package/src/vite/index.ts +1 -21
- package/src/vite/plugins/viteAlephaDev.ts +16 -1
- package/src/vite/plugins/viteAlephaSsrPreload.ts +222 -0
- package/src/vite/tasks/buildClient.ts +11 -0
- package/src/vite/tasks/buildServer.ts +47 -3
- package/src/vite/tasks/devServer.ts +69 -0
- package/src/vite/tasks/index.ts +2 -1
- package/src/cli/assets/viteConfigTs.ts +0 -14
- package/src/cli/commands/run.ts +0 -24
- package/src/vite/plugins/viteAlepha.ts +0 -37
- package/src/vite/plugins/viteAlephaBuild.ts +0 -281
package/src/vite/tasks/index.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Build tasks for Alepha applications.
|
|
3
3
|
*
|
|
4
4
|
* These tasks can be used by:
|
|
5
|
-
* - Vite plugins (viteAlephaDev,
|
|
5
|
+
* - Vite plugins (viteAlephaDev, viteAlephaSsrPreload)
|
|
6
6
|
* - CLI commands (alepha build, alepha dev)
|
|
7
7
|
*
|
|
8
8
|
* Each task is a standalone async function with explicit inputs and outputs.
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
export * from "./buildClient.ts";
|
|
14
14
|
export * from "./buildServer.ts";
|
|
15
15
|
export * from "./copyAssets.ts";
|
|
16
|
+
export * from "./devServer.ts";
|
|
16
17
|
export * from "./generateCloudflare.ts";
|
|
17
18
|
export * from "./generateDocker.ts";
|
|
18
19
|
export * from "./generateExternals.ts";
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export const viteConfigTs = (
|
|
2
|
-
serverEntry?: string,
|
|
3
|
-
) => `
|
|
4
|
-
import { viteAlepha } from "alepha/vite";
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
plugins: [
|
|
8
|
-
viteAlepha(${serverEntry ? `{ serverEntry: "${serverEntry}" }` : ""}),
|
|
9
|
-
],
|
|
10
|
-
test: {
|
|
11
|
-
globals: true,
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
`.trim();
|
package/src/cli/commands/run.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { $inject, t } from "alepha";
|
|
2
|
-
import { $command } from "alepha/command";
|
|
3
|
-
import { AlephaCliUtils } from "../services/AlephaCliUtils.ts";
|
|
4
|
-
|
|
5
|
-
export class RunCommand {
|
|
6
|
-
protected readonly utils = $inject(AlephaCliUtils);
|
|
7
|
-
|
|
8
|
-
public readonly run = $command({
|
|
9
|
-
name: "run",
|
|
10
|
-
hide: true,
|
|
11
|
-
description: "Run a TypeScript file directly",
|
|
12
|
-
flags: t.object({
|
|
13
|
-
watch: t.optional(
|
|
14
|
-
t.boolean({ description: "Watch file for changes", alias: "w" }),
|
|
15
|
-
),
|
|
16
|
-
}),
|
|
17
|
-
summary: false,
|
|
18
|
-
args: t.text({ title: "path", description: "Filepath to run" }),
|
|
19
|
-
handler: async ({ args, flags, root }) => {
|
|
20
|
-
await this.utils.ensureTsConfig(root);
|
|
21
|
-
await this.utils.exec(`tsx ${flags.watch ? "watch " : ""}${args}`);
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { createRequire } from "node:module";
|
|
2
|
-
import { OPTIONS } from "alepha";
|
|
3
|
-
import type { Plugin } from "vite";
|
|
4
|
-
import {
|
|
5
|
-
type ViteAlephaBuildOptions,
|
|
6
|
-
viteAlephaBuild,
|
|
7
|
-
} from "./viteAlephaBuild.ts";
|
|
8
|
-
import { type ViteAlephaDevOptions, viteAlephaDev } from "./viteAlephaDev.ts";
|
|
9
|
-
|
|
10
|
-
export type ViteAlephaOptions = ViteAlephaDevOptions &
|
|
11
|
-
ViteAlephaBuildOptions & {
|
|
12
|
-
react?: false;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export function viteAlepha(
|
|
16
|
-
options: ViteAlephaOptions = {},
|
|
17
|
-
): (Plugin | Promise<Plugin>)[] {
|
|
18
|
-
if (process.env.NODE_ENV === "test") {
|
|
19
|
-
return [];
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const plugins: (Plugin | Promise<Plugin>)[] & { [OPTIONS]?: any } = [];
|
|
23
|
-
|
|
24
|
-
if (options.react !== false) {
|
|
25
|
-
try {
|
|
26
|
-
const { default: viteReact } = createRequire(import.meta.url)(
|
|
27
|
-
"@vitejs/plugin-react",
|
|
28
|
-
);
|
|
29
|
-
plugins.push(viteReact());
|
|
30
|
-
} catch (e) {}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
plugins.push(viteAlephaDev(options), viteAlephaBuild(options));
|
|
34
|
-
plugins[OPTIONS] = options;
|
|
35
|
-
|
|
36
|
-
return plugins;
|
|
37
|
-
}
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
import { readFile, unlink, writeFile } from "node:fs/promises";
|
|
2
|
-
import { OPTIONS } from "alepha";
|
|
3
|
-
import type { Plugin, UserConfig } from "vite";
|
|
4
|
-
import { boot } from "../helpers/boot.ts";
|
|
5
|
-
import { fileExists } from "../helpers/fileExists.ts";
|
|
6
|
-
import {
|
|
7
|
-
type BuildClientOptions,
|
|
8
|
-
buildClient,
|
|
9
|
-
buildServer,
|
|
10
|
-
copyAssets,
|
|
11
|
-
type GenerateDockerOptions,
|
|
12
|
-
generateCloudflare,
|
|
13
|
-
generateDocker,
|
|
14
|
-
generateSitemap,
|
|
15
|
-
generateVercel,
|
|
16
|
-
prerenderPages,
|
|
17
|
-
type VercelConfig,
|
|
18
|
-
type WranglerConfig,
|
|
19
|
-
} from "../tasks/index.ts";
|
|
20
|
-
|
|
21
|
-
export interface ViteAlephaBuildOptions {
|
|
22
|
-
/**
|
|
23
|
-
* Path to the entry file for the server build.
|
|
24
|
-
* If empty, SSR build will be skipped.
|
|
25
|
-
*/
|
|
26
|
-
serverEntry?: string | false;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Set false to skip the client build.
|
|
30
|
-
* This is useful if you only want to build the server-side application.
|
|
31
|
-
*/
|
|
32
|
-
client?: false | Partial<BuildClientOptions>;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* If true, the build will be optimized for Vercel deployment.
|
|
36
|
-
*
|
|
37
|
-
* If `VERCEL_PROJECT_ID` and `VERCEL_ORG_ID` environment variables are set, .vercel will be generated with the correct configuration.
|
|
38
|
-
*
|
|
39
|
-
* @default false
|
|
40
|
-
*/
|
|
41
|
-
vercel?: boolean | VercelConfig;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* If true, the build will generate Cloudflare Workers configuration.
|
|
45
|
-
*
|
|
46
|
-
* @default false
|
|
47
|
-
*/
|
|
48
|
-
cloudflare?: boolean | WranglerConfig;
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* If true, the build will be optimized for Docker deployment.
|
|
52
|
-
* Additionally, it will generate a Dockerfile in the dist directory.
|
|
53
|
-
*/
|
|
54
|
-
docker?: boolean | Omit<GenerateDockerOptions, "distDir">;
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* If true, build statistics will be printed after the build completes.
|
|
58
|
-
*/
|
|
59
|
-
stats?: boolean;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Build modes controlled by ALEPHA_BUILD_MODE environment variable:
|
|
64
|
-
* - "cli": Skip plugin entirely, CLI handles all tasks
|
|
65
|
-
* - "client": Only build client bundle
|
|
66
|
-
* - "server": Only build server bundle
|
|
67
|
-
* - undefined/other: Full build (default behavior)
|
|
68
|
-
*/
|
|
69
|
-
export type AlephaBuildMode = "cli" | "client" | "server";
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Alepha build plugin for Vite.
|
|
73
|
-
*
|
|
74
|
-
* This plugin orchestrates the complete build process:
|
|
75
|
-
* 1. Build client (if index.html exists)
|
|
76
|
-
* 2. Build server (SSR)
|
|
77
|
-
* 3. Copy assets from packages
|
|
78
|
-
* 4. Pre-render static pages (if enabled)
|
|
79
|
-
* 5. Generate sitemap (if enabled)
|
|
80
|
-
* 6. Generate deployment config (Vercel/Cloudflare/Docker)
|
|
81
|
-
*
|
|
82
|
-
* Build mode can be controlled via ALEPHA_BUILD_MODE env var for CLI integration.
|
|
83
|
-
*/
|
|
84
|
-
export async function viteAlephaBuild(
|
|
85
|
-
options: ViteAlephaBuildOptions = {},
|
|
86
|
-
): Promise<Plugin> {
|
|
87
|
-
const entry = options.serverEntry ?? (await boot.getServerEntry());
|
|
88
|
-
const distDir = "dist";
|
|
89
|
-
const clientDir = "public";
|
|
90
|
-
|
|
91
|
-
let rootConfig: UserConfig = {};
|
|
92
|
-
|
|
93
|
-
return {
|
|
94
|
-
name: "alepha:build",
|
|
95
|
-
apply: "build",
|
|
96
|
-
[OPTIONS as any]: options,
|
|
97
|
-
config(config, ctx) {
|
|
98
|
-
const buildMode = process.env.ALEPHA_BUILD_MODE as
|
|
99
|
-
| AlephaBuildMode
|
|
100
|
-
| undefined;
|
|
101
|
-
|
|
102
|
-
// CLI mode: plugin does nothing, CLI handles everything
|
|
103
|
-
if (buildMode === "cli") {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// For now, we run two separate builds: one for the client and one for the server
|
|
108
|
-
// We distinguish them using an environment variable
|
|
109
|
-
if (!process.env.VITE_DOUBLE_BUILD_DONE) {
|
|
110
|
-
rootConfig = config;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (ctx.isSsrBuild || !process.env.VITE_DOUBLE_BUILD_DONE) {
|
|
114
|
-
// Server build, so we don't need the public directory
|
|
115
|
-
config.publicDir = false;
|
|
116
|
-
} else {
|
|
117
|
-
// Client build, so we need the public directory
|
|
118
|
-
config.publicDir = "public";
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
async buildStart() {
|
|
122
|
-
const buildMode = process.env.ALEPHA_BUILD_MODE as
|
|
123
|
-
| AlephaBuildMode
|
|
124
|
-
| undefined;
|
|
125
|
-
|
|
126
|
-
// CLI mode: skip entirely
|
|
127
|
-
if (buildMode === "cli") {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
if (process.env.VITE_DOUBLE_BUILD_DONE === "true") {
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
process.env.VITE_DOUBLE_BUILD_DONE = "true";
|
|
136
|
-
|
|
137
|
-
const hasClient =
|
|
138
|
-
options.client !== false && (await fileExists("index.html"));
|
|
139
|
-
|
|
140
|
-
const buildClientOptions =
|
|
141
|
-
typeof options.client === "object" ? options.client : {};
|
|
142
|
-
|
|
143
|
-
const stats = options.stats ?? process.env.ALEPHA_BUILD_STATS === "true";
|
|
144
|
-
|
|
145
|
-
// Client-only mode
|
|
146
|
-
if (buildMode === "client") {
|
|
147
|
-
if (hasClient) {
|
|
148
|
-
await buildClient({
|
|
149
|
-
...buildClientOptions,
|
|
150
|
-
config: rootConfig,
|
|
151
|
-
dist: `${distDir}/${clientDir}`,
|
|
152
|
-
stats,
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
process.exit(0);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Server-only mode
|
|
159
|
-
if (buildMode === "server") {
|
|
160
|
-
if (entry) {
|
|
161
|
-
// Check if client was already built (template exists)
|
|
162
|
-
let clientBuilt = false;
|
|
163
|
-
try {
|
|
164
|
-
await readFile(`${distDir}/${clientDir}/index.html`, "utf-8");
|
|
165
|
-
clientBuilt = true;
|
|
166
|
-
} catch {
|
|
167
|
-
// No client build
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
await buildServer({
|
|
171
|
-
config: {
|
|
172
|
-
base: rootConfig.base || "",
|
|
173
|
-
},
|
|
174
|
-
entry,
|
|
175
|
-
distDir,
|
|
176
|
-
clientDir: clientBuilt ? clientDir : undefined,
|
|
177
|
-
stats,
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
process.exit(0);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// Full build mode (default)
|
|
184
|
-
|
|
185
|
-
// Task 1: Build client
|
|
186
|
-
if (hasClient) {
|
|
187
|
-
await buildClient({
|
|
188
|
-
...buildClientOptions,
|
|
189
|
-
config: rootConfig,
|
|
190
|
-
dist: `${distDir}/${clientDir}`,
|
|
191
|
-
stats,
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
let template = "";
|
|
196
|
-
if (hasClient) {
|
|
197
|
-
// Load output index.html for template embedding
|
|
198
|
-
template = await readFile(
|
|
199
|
-
`${distDir}/${clientDir}/index.html`,
|
|
200
|
-
"utf-8",
|
|
201
|
-
);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// Task 2: Build server
|
|
205
|
-
if (entry) {
|
|
206
|
-
await buildServer({
|
|
207
|
-
config: {
|
|
208
|
-
base: rootConfig.base || "",
|
|
209
|
-
},
|
|
210
|
-
entry,
|
|
211
|
-
distDir,
|
|
212
|
-
clientDir: hasClient ? clientDir : undefined,
|
|
213
|
-
stats,
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
// Server will handle index.html if both client & server are built
|
|
217
|
-
if (hasClient && options.serverEntry !== false) {
|
|
218
|
-
await unlink(`${distDir}/${clientDir}/index.html`);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
// Task 3: Copy assets (swagger ui & others)
|
|
222
|
-
await copyAssets({
|
|
223
|
-
entry: `${distDir}/index.js`,
|
|
224
|
-
distDir,
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// Task 4: Generate sitemap
|
|
229
|
-
if (buildClientOptions.sitemap && entry) {
|
|
230
|
-
await writeFile(
|
|
231
|
-
`${distDir}/${clientDir}/sitemap.xml`,
|
|
232
|
-
await generateSitemap({
|
|
233
|
-
entry: `${distDir}/index.js`,
|
|
234
|
-
baseUrl: buildClientOptions.sitemap.hostname,
|
|
235
|
-
}),
|
|
236
|
-
);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
// Task 5: Pre-render static pages
|
|
240
|
-
if (buildClientOptions.prerender && template) {
|
|
241
|
-
await prerenderPages({
|
|
242
|
-
dist: `${distDir}/${clientDir}`,
|
|
243
|
-
entry: `${distDir}/index.js`,
|
|
244
|
-
compress: buildClientOptions.precompress,
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
// Task 6: Generate deployment configurations
|
|
249
|
-
if (options.vercel) {
|
|
250
|
-
const config =
|
|
251
|
-
typeof options.vercel === "boolean" ? {} : options.vercel;
|
|
252
|
-
await generateVercel({
|
|
253
|
-
distDir,
|
|
254
|
-
clientDir,
|
|
255
|
-
config,
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
if (options.cloudflare) {
|
|
260
|
-
const config =
|
|
261
|
-
typeof options.cloudflare === "boolean" ? {} : options.cloudflare;
|
|
262
|
-
await generateCloudflare({
|
|
263
|
-
distDir,
|
|
264
|
-
config,
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
if (options.docker) {
|
|
269
|
-
const dockerOpts =
|
|
270
|
-
typeof options.docker === "boolean" ? {} : options.docker;
|
|
271
|
-
await generateDocker({
|
|
272
|
-
distDir,
|
|
273
|
-
...dockerOpts,
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
// Prevent the default build from running again
|
|
278
|
-
process.exit(0);
|
|
279
|
-
},
|
|
280
|
-
};
|
|
281
|
-
}
|