Dieses Repository beinhaltet HTML- und Javascript Code zur einer NotizenWebApp auf Basis von Web Storage. Zudem sind Mocha/Chai Tests im Browser enthalten. https://meinenotizen.netlify.app/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

live-server.js 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #!/usr/bin/env node
  2. var path = require('path');
  3. var fs = require('fs');
  4. var assign = require('object-assign');
  5. var liveServer = require("./index");
  6. var opts = {
  7. host: process.env.IP,
  8. port: process.env.PORT,
  9. open: true,
  10. mount: [],
  11. proxy: [],
  12. middleware: [],
  13. logLevel: 2,
  14. };
  15. var homeDir = process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME'];
  16. var configPath = path.join(homeDir, '.live-server.json');
  17. if (fs.existsSync(configPath)) {
  18. var userConfig = fs.readFileSync(configPath, 'utf8');
  19. assign(opts, JSON.parse(userConfig));
  20. if (opts.ignorePattern) opts.ignorePattern = new RegExp(opts.ignorePattern);
  21. }
  22. for (var i = process.argv.length - 1; i >= 2; --i) {
  23. var arg = process.argv[i];
  24. if (arg.indexOf("--port=") > -1) {
  25. var portString = arg.substring(7);
  26. var portNumber = parseInt(portString, 10);
  27. if (portNumber === +portString) {
  28. opts.port = portNumber;
  29. process.argv.splice(i, 1);
  30. }
  31. }
  32. else if (arg.indexOf("--host=") > -1) {
  33. opts.host = arg.substring(7);
  34. process.argv.splice(i, 1);
  35. }
  36. else if (arg.indexOf("--open=") > -1) {
  37. var open = arg.substring(7);
  38. if (open.indexOf('/') !== 0) {
  39. open = '/' + open;
  40. }
  41. switch (typeof opts.open) {
  42. case "boolean":
  43. opts.open = open;
  44. break;
  45. case "string":
  46. opts.open = [opts.open, open];
  47. break;
  48. case "object":
  49. opts.open.push(open);
  50. break;
  51. }
  52. process.argv.splice(i, 1);
  53. }
  54. else if (arg.indexOf("--watch=") > -1) {
  55. // Will be modified later when cwd is known
  56. opts.watch = arg.substring(8).split(",");
  57. process.argv.splice(i, 1);
  58. }
  59. else if (arg.indexOf("--ignore=") > -1) {
  60. // Will be modified later when cwd is known
  61. opts.ignore = arg.substring(9).split(",");
  62. process.argv.splice(i, 1);
  63. }
  64. else if (arg.indexOf("--ignorePattern=") > -1) {
  65. opts.ignorePattern = new RegExp(arg.substring(16));
  66. process.argv.splice(i, 1);
  67. }
  68. else if (arg === "--no-css-inject") {
  69. opts.noCssInject = true;
  70. process.argv.splice(i, 1);
  71. }
  72. else if (arg === "--no-browser") {
  73. opts.open = false;
  74. process.argv.splice(i, 1);
  75. }
  76. else if (arg.indexOf("--browser=") > -1) {
  77. opts.browser = arg.substring(10).split(",");
  78. process.argv.splice(i, 1);
  79. }
  80. else if (arg.indexOf("--entry-file=") > -1) {
  81. var file = arg.substring(13);
  82. if (file.length) {
  83. opts.file = file;
  84. process.argv.splice(i, 1);
  85. }
  86. }
  87. else if (arg === "--spa") {
  88. opts.middleware.push("spa");
  89. process.argv.splice(i, 1);
  90. }
  91. else if (arg === "--quiet" || arg === "-q") {
  92. opts.logLevel = 0;
  93. process.argv.splice(i, 1);
  94. }
  95. else if (arg === "--verbose" || arg === "-V") {
  96. opts.logLevel = 3;
  97. process.argv.splice(i, 1);
  98. }
  99. else if (arg.indexOf("--mount=") > -1) {
  100. // e.g. "--mount=/components:./node_modules" will be ['/components', '<process.cwd()>/node_modules']
  101. // split only on the first ":", as the path may contain ":" as well (e.g. C:\file.txt)
  102. var match = arg.substring(8).match(/([^:]+):(.+)$/);
  103. match[2] = path.resolve(process.cwd(), match[2]);
  104. opts.mount.push([ match[1], match[2] ]);
  105. process.argv.splice(i, 1);
  106. }
  107. else if (arg.indexOf("--wait=") > -1) {
  108. var waitString = arg.substring(7);
  109. var waitNumber = parseInt(waitString, 10);
  110. if (waitNumber === +waitString) {
  111. opts.wait = waitNumber;
  112. process.argv.splice(i, 1);
  113. }
  114. }
  115. else if (arg === "--version" || arg === "-v") {
  116. var packageJson = require('./package.json');
  117. console.log(packageJson.name, packageJson.version);
  118. process.exit();
  119. }
  120. else if (arg.indexOf("--htpasswd=") > -1) {
  121. opts.htpasswd = arg.substring(11);
  122. process.argv.splice(i, 1);
  123. }
  124. else if (arg === "--cors") {
  125. opts.cors = true;
  126. process.argv.splice(i, 1);
  127. }
  128. else if (arg.indexOf("--https=") > -1) {
  129. opts.https = arg.substring(8);
  130. process.argv.splice(i, 1);
  131. }
  132. else if (arg.indexOf("--https-module=") > -1) {
  133. opts.httpsModule = arg.substring(15);
  134. process.argv.splice(i, 1);
  135. }
  136. else if (arg.indexOf("--proxy=") > -1) {
  137. // split only on the first ":", as the URL will contain ":" as well
  138. var match = arg.substring(8).match(/([^:]+):(.+)$/);
  139. opts.proxy.push([ match[1], match[2] ]);
  140. process.argv.splice(i, 1);
  141. }
  142. else if (arg.indexOf("--middleware=") > -1) {
  143. opts.middleware.push(arg.substring(13));
  144. process.argv.splice(i, 1);
  145. }
  146. else if (arg === "--help" || arg === "-h") {
  147. console.log('Usage: live-server [-v|--version] [-h|--help] [-q|--quiet] [--port=PORT] [--host=HOST] [--open=PATH] [--no-browser] [--browser=BROWSER] [--ignore=PATH] [--ignorePattern=RGXP] [--no-css-inject] [--entry-file=PATH] [--spa] [--mount=ROUTE:PATH] [--wait=MILLISECONDS] [--htpasswd=PATH] [--cors] [--https=PATH] [--https-module=MODULE_NAME] [--proxy=PATH] [PATH]');
  148. process.exit();
  149. }
  150. else if (arg === "--test") {
  151. // Hidden param for tests to exit automatically
  152. setTimeout(liveServer.shutdown, 500);
  153. process.argv.splice(i, 1);
  154. }
  155. }
  156. // Patch paths
  157. var dir = opts.root = process.argv[2] || "";
  158. if (opts.watch) {
  159. opts.watch = opts.watch.map(function(relativePath) {
  160. return path.join(dir, relativePath);
  161. });
  162. }
  163. if (opts.ignore) {
  164. opts.ignore = opts.ignore.map(function(relativePath) {
  165. return path.join(dir, relativePath);
  166. });
  167. }
  168. liveServer.start(opts);