版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

110 строки
4.0 KiB

  1. 'use strict';
  2. var cac = require('cac');
  3. var c = require('picocolors');
  4. var vite = require('vite');
  5. var server = require('./server.cjs');
  6. var client = require('./client.cjs');
  7. var utils = require('./utils.cjs');
  8. var hmr = require('./chunk-hmr.cjs');
  9. var sourceMap = require('./source-map.cjs');
  10. require('perf_hooks');
  11. require('fs');
  12. require('pathe');
  13. require('debug');
  14. require('mlly');
  15. require('node:url');
  16. require('path');
  17. require('module');
  18. require('vm');
  19. require('node:events');
  20. function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
  21. var cac__default = /*#__PURE__*/_interopDefaultLegacy(cac);
  22. var c__default = /*#__PURE__*/_interopDefaultLegacy(c);
  23. var version = "0.29.8";
  24. const cli = cac__default["default"]("vite-node");
  25. cli.version(version).option("-r, --root <path>", "Use specified root directory").option("-c, --config <path>", "Use specified config file").option("-m, --mode <mode>", "Set env mode").option("-w, --watch", 'Restart on file changes, similar to "nodemon"').option("--script", "Use vite-node as a script runner").option("--options <options>", "Use specified Vite server options").help();
  26. cli.command("[...files]").allowUnknownOptions().action(run);
  27. cli.parse();
  28. async function run(files, options = {}) {
  29. var _a;
  30. if (options.script) {
  31. files = [files[0]];
  32. options = {};
  33. process.argv = [process.argv[0], files[0], ...process.argv.slice(2).filter((arg) => arg !== "--script" && arg !== files[0])];
  34. } else {
  35. process.argv = [...process.argv.slice(0, 2), ...options["--"] || []];
  36. }
  37. if (!files.length) {
  38. console.error(c__default["default"].red("No files specified."));
  39. cli.outputHelp();
  40. process.exit(1);
  41. }
  42. const serverOptions = options.options ? parseServerOptions(options.options) : {};
  43. const server$1 = await vite.createServer({
  44. logLevel: "error",
  45. configFile: options.config,
  46. root: options.root,
  47. mode: options.mode,
  48. plugins: [
  49. options.watch && hmr.viteNodeHmrPlugin()
  50. ]
  51. });
  52. await server$1.pluginContainer.buildStart({});
  53. const node = new server.ViteNodeServer(server$1, serverOptions);
  54. sourceMap.installSourcemapsSupport({
  55. getSourceMap: (source) => node.getSourceMap(source)
  56. });
  57. const runner = new client.ViteNodeRunner({
  58. root: server$1.config.root,
  59. base: server$1.config.base,
  60. fetchModule(id) {
  61. return node.fetchModule(id);
  62. },
  63. resolveId(id, importer) {
  64. return node.resolveId(id, importer);
  65. },
  66. createHotContext(runner2, url) {
  67. return hmr.createHotContext(runner2, server$1.emitter, files, url);
  68. }
  69. });
  70. await runner.executeId("/@vite/env");
  71. for (const file of files)
  72. await runner.executeFile(file);
  73. if (!options.watch)
  74. await server$1.close();
  75. (_a = server$1.emitter) == null ? void 0 : _a.on("message", (payload) => {
  76. hmr.handleMessage(runner, server$1.emitter, files, payload);
  77. });
  78. if (options.watch) {
  79. process.on("uncaughtException", (err) => {
  80. console.error(c__default["default"].red("[vite-node] Failed to execute file: \n"), err);
  81. });
  82. }
  83. }
  84. function parseServerOptions(serverOptions) {
  85. var _a, _b, _c, _d, _e;
  86. const inlineOptions = ((_a = serverOptions.deps) == null ? void 0 : _a.inline) === true ? true : utils.toArray((_b = serverOptions.deps) == null ? void 0 : _b.inline);
  87. return {
  88. ...serverOptions,
  89. deps: {
  90. ...serverOptions.deps,
  91. inline: inlineOptions !== true ? inlineOptions.map((dep) => {
  92. return dep.startsWith("/") && dep.endsWith("/") ? new RegExp(dep) : dep;
  93. }) : true,
  94. external: utils.toArray((_c = serverOptions.deps) == null ? void 0 : _c.external).map((dep) => {
  95. return dep.startsWith("/") && dep.endsWith("/") ? new RegExp(dep) : dep;
  96. })
  97. },
  98. transformMode: {
  99. ...serverOptions.transformMode,
  100. ssr: utils.toArray((_d = serverOptions.transformMode) == null ? void 0 : _d.ssr).map((dep) => new RegExp(dep)),
  101. web: utils.toArray((_e = serverOptions.transformMode) == null ? void 0 : _e.web).map((dep) => new RegExp(dep))
  102. }
  103. };
  104. }