UNPKG

1.98 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, cwd) {
14 setupEnvVariables(sourcePath, cwd);
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 // clean any `node_modules` INSIDE `public or www` folder
47 // (only if cwd and www are different (when running like: `zero www`))
48 if (process.env.SOURCEPATH !== process.env.PROJECTPATH) {
49 dupNodeModules = path.join(process.env.SOURCEPATH, "node_modules");
50 if (fs.existsSync(dupNodeModules)) {
51 await del([slash(path.join(dupNodeModules, "/**"))], {
52 force: true
53 });
54 }
55 }
56
57 return new Promise((resolve, reject) => {
58 var hasResolved = false;
59 manifest.on("change", () => {
60 hasResolved = true;
61 resolve();
62 });
63 });
64};