| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.createServer = exports.rewriteImports = void 0;
- const path_1 = __importDefault(require("path"));
- const fs_extra_1 = __importDefault(require("fs-extra"));
- const koa_1 = __importDefault(require("koa"));
- const chokidar_1 = __importDefault(require("chokidar"));
- const resolver_1 = require("../resolver");
- const serverPluginModuleRewrite_1 = require("./serverPluginModuleRewrite");
- const serverPluginModuleResolve_1 = require("./serverPluginModuleResolve");
- const serverPluginVue_1 = require("./serverPluginVue");
- const serverPluginHmr_1 = require("./serverPluginHmr");
- const serverPluginServeStatic_1 = require("./serverPluginServeStatic");
- const serverPluginJson_1 = require("./serverPluginJson");
- const serverPluginCss_1 = require("./serverPluginCss");
- const serverPluginAssets_1 = require("./serverPluginAssets");
- const serverPluginEsbuild_1 = require("./serverPluginEsbuild");
- const transform_1 = require("../transform");
- const serverPluginHtml_1 = require("./serverPluginHtml");
- const serverPluginProxy_1 = require("./serverPluginProxy");
- const createCertificate_1 = require("../utils/createCertificate");
- const utils_1 = require("../utils");
- const serverPluginEnv_1 = require("./serverPluginEnv");
- var serverPluginModuleRewrite_2 = require("./serverPluginModuleRewrite");
- Object.defineProperty(exports, "rewriteImports", { enumerable: true, get: function () { return serverPluginModuleRewrite_2.rewriteImports; } });
- const serverPluginSourceMap_1 = require("./serverPluginSourceMap");
- const serverPluginWebWorker_1 = require("./serverPluginWebWorker");
- const serverPluginWasm_1 = require("./serverPluginWasm");
- const serverPluginClient_1 = require("./serverPluginClient");
- function createServer(config) {
- const { root = process.cwd(), configureServer = [], resolvers = [], alias = {}, transforms = [], vueCustomBlockTransforms = {}, optimizeDeps = {}, enableEsbuild = true, assetsInclude } = config;
- const app = new koa_1.default();
- const server = resolveServer(config, app.callback());
- const watcher = chokidar_1.default.watch(root, {
- ignored: [/node_modules/, /\.git/],
- // #610
- awaitWriteFinish: {
- stabilityThreshold: 100,
- pollInterval: 10
- }
- });
- const resolver = resolver_1.createResolver(root, resolvers, alias, assetsInclude);
- const context = {
- root,
- app,
- server,
- watcher,
- resolver,
- config,
- // port is exposed on the context for hmr client connection
- // in case the files are served under a different port
- port: config.port || 3000
- };
- // attach server context to koa context
- app.use((ctx, next) => {
- Object.assign(ctx, context);
- ctx.read = utils_1.cachedRead.bind(null, ctx);
- return next();
- });
- // cors
- if (config.cors) {
- app.use(require('@koa/cors')(typeof config.cors === 'boolean' ? {} : config.cors));
- }
- const resolvedPlugins = [
- // rewrite and source map plugins take highest priority and should be run
- // after all other middlewares have finished
- serverPluginSourceMap_1.sourceMapPlugin,
- serverPluginModuleRewrite_1.moduleRewritePlugin,
- serverPluginHtml_1.htmlRewritePlugin,
- // user plugins
- ...utils_1.toArray(configureServer),
- serverPluginEnv_1.envPlugin,
- serverPluginModuleResolve_1.moduleResolvePlugin,
- serverPluginProxy_1.proxyPlugin,
- serverPluginClient_1.clientPlugin,
- serverPluginHmr_1.hmrPlugin,
- ...(transforms.length || Object.keys(vueCustomBlockTransforms).length
- ? [
- transform_1.createServerTransformPlugin(transforms, vueCustomBlockTransforms, resolver)
- ]
- : []),
- serverPluginVue_1.vuePlugin,
- serverPluginCss_1.cssPlugin,
- enableEsbuild ? serverPluginEsbuild_1.esbuildPlugin : null,
- serverPluginJson_1.jsonPlugin,
- serverPluginAssets_1.assetPathPlugin,
- serverPluginWebWorker_1.webWorkerPlugin,
- serverPluginWasm_1.wasmPlugin,
- serverPluginServeStatic_1.serveStaticPlugin
- ];
- resolvedPlugins.forEach((m) => m && m(context));
- const listen = server.listen.bind(server);
- server.listen = (async (port, ...args) => {
- if (optimizeDeps.auto !== false) {
- await require('../optimizer').optimizeDeps(config);
- }
- return listen(port, ...args);
- });
- server.once('listening', () => {
- context.port = server.address().port;
- });
- return server;
- }
- exports.createServer = createServer;
- function resolveServer({ https = false, httpsOptions = {}, proxy }, requestListener) {
- if (https) {
- if (proxy) {
- // #484 fallback to http1 when proxy is needed.
- return require('https').createServer(resolveHttpsConfig(httpsOptions), requestListener);
- }
- else {
- return require('http2').createSecureServer({
- ...resolveHttpsConfig(httpsOptions),
- allowHTTP1: true
- }, requestListener);
- }
- }
- else {
- return require('http').createServer(requestListener);
- }
- }
- function resolveHttpsConfig(httpsOption) {
- const { ca, cert, key, pfx } = httpsOption;
- Object.assign(httpsOption, {
- ca: readFileIfExists(ca),
- cert: readFileIfExists(cert),
- key: readFileIfExists(key),
- pfx: readFileIfExists(pfx)
- });
- if (!httpsOption.key || !httpsOption.cert) {
- httpsOption.cert = httpsOption.key = createCertificate_1.createCertificate();
- }
- return httpsOption;
- }
- function readFileIfExists(value) {
- if (value && !Buffer.isBuffer(value)) {
- try {
- return fs_extra_1.default.readFileSync(path_1.default.resolve(value));
- }
- catch (e) {
- return value;
- }
- }
- return value;
- }
- //# sourceMappingURL=index.js.map
|