UNPKG

1.56 kBJavaScriptView Raw
1const Manifest = require("./manifest");
2const startRouter = require("./router");
3const path = require("path");
4const fs = require("fs");
5const del = require("del");
6const mkdirp = require("mkdirp");
7const Watcher = require("./utils/watcher");
8const slash = require("./utils/fixPathSlashes");
9const pkg = require("../package");
10const setupEnvVariables = require("./utils/setupEnvVars");
11const ISDEV = process.env.NODE_ENV !== "production";
12
13module.exports = async function server(sourcePath) {
14 setupEnvVariables(sourcePath);
15
16 // create the build folder if not present already
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 // clear any `zero build` configs to avoid confusion
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 // clean any `node_modules` INSIDE .zero folder if it exists.
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};