1 | const Manifest = require("./manifest");
|
2 | const startRouter = require("./router");
|
3 | const path = require("path");
|
4 | const fs = require("fs");
|
5 | const del = require("del");
|
6 | const mkdirp = require("mkdirp");
|
7 | const Watcher = require("./utils/watcher");
|
8 | const slash = require("./utils/fixPathSlashes");
|
9 | const pkg = require("../package");
|
10 | const setupEnvVariables = require("./utils/setupEnvVars");
|
11 | const ISDEV = process.env.NODE_ENV !== "production";
|
12 |
|
13 | module.exports = async function server(sourcePath) {
|
14 | setupEnvVariables(sourcePath);
|
15 |
|
16 |
|
17 | mkdirp.sync(process.env.BUILDPATH);
|
18 |
|
19 | console.log(`\x1b[2m⚡️ Zero ${pkg.version ? `v${pkg.version}` : ""}\x1b[0m`);
|
20 |
|
21 | var fileWatch = new Watcher(sourcePath, ISDEV);
|
22 | var manifest = new Manifest(sourcePath, fileWatch);
|
23 |
|
24 | startRouter(sourcePath, manifest);
|
25 |
|
26 |
|
27 | var buildConfigPath = path.join(
|
28 | process.env.BUILDPATH,
|
29 | "zero-builds",
|
30 | "_config"
|
31 | );
|
32 | if (fs.existsSync(buildConfigPath)) {
|
33 | await del([slash(path.join(buildConfigPath, "/**"))], {
|
34 | force: true
|
35 | });
|
36 | }
|
37 |
|
38 |
|
39 | var dupNodeModules = path.join(process.env.BUILDPATH, "node_modules");
|
40 | if (fs.existsSync(dupNodeModules)) {
|
41 | await del([slash(path.join(dupNodeModules, "/**"))], {
|
42 | force: true
|
43 | });
|
44 | }
|
45 |
|
46 | return new Promise((resolve, reject) => {
|
47 | var hasResolved = false;
|
48 | manifest.on("change", () => {
|
49 | hasResolved = true;
|
50 | resolve();
|
51 | });
|
52 | });
|
53 | };
|