docs: async function Execute(command, args, watch) {
      let coverage = args.filter(s => s === "--cover").length > 0; 
      let full = args.filter(s => s === "--full").length > 0;
      switch (command) {
          case "wp":
              let wp = `webpack --config ./config/webpack.${args[0]}.ts`;
              if (watch) wp += " --watch";
              await run(wp);
              break;
          case "deploy":
              await run("node script unit --cover");
              await run("node script e2e");
              await run("node script wp dist");
              break;
          case "e2e":
              await run("node script wp e2e");
              let headless = [
                  "chrome:headless", 
                  "firefox:headless", 
                  "chrome-canary:headless" 
              ].map(s => `testcafe ${s} ./test/e2e/**/*.test.ts`);
              let real = [
                  "chrome", 
                  "firefox", 
                  "ie", 
                  "opera", 
                  "chrome-canary", 
                  "edge" 
              ].map(s => `testcafe ${s} ./test/e2e/**/*.test.ts`);
              let test = headless;
              if (full) test = test.concat(real);
              await run(test.join(" && "));
              break;
          case "unit":
              let mocha = `mocha --opts ./config/mocha.opts`;
              if (watch) mocha += " --watch-extensions ts --watch ";
              if (coverage) mocha = "nyc --nycrc-path ./config/.nycrc " + mocha; 
              if (fs.existsSync("./.nyc_output")) rimraf.sync("./.nyc_output"); 
              await run(mocha);
              break;
          case "publish":
              await run(`npm run deploy`);
              await run(`git add .`); 
              await run(`git commit -m "Preparing for next ${args[0]} version`); 
              await run(`npm version ${args[0]}`);
              await run(`npm publish`);
              break;
          default:
              console.log("Unknown command!");
              process.exit(1);
      }
  
  }