版博士V2.0程序
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

103 Zeilen
3.7 KiB

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