UNPKG

@modern-js/builder

Version:
87 lines (86 loc) 3.4 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var startUrl_exports = {}; __export(startUrl_exports, { builderPluginStartUrl: () => builderPluginStartUrl, replacePlaceholder: () => replacePlaceholder }); module.exports = __toCommonJS(startUrl_exports); var import_lodash = __toESM(require("@modern-js/utils/lodash")); const replacePlaceholder = (url, port) => url.replace(/<port>/g, String(port)); const openedURLs = []; function builderPluginStartUrl() { return { name: "builder-plugin-start-url", async setup(api) { let port; api.onAfterStartDevServer(async (params) => { ({ port } = params); }); api.onDevCompileDone(async ({ isFirstCompile }) => { if (!isFirstCompile || !port) { return; } const config = api.getNormalizedConfig(); const { startUrl, beforeStartUrl } = config.dev; const { https } = api.context.devServer || {}; if (!startUrl) { return; } const urls = []; if (startUrl === true) { const protocol = https ? "https" : "http"; urls.push(`${protocol}://localhost:${port}`); } else { urls.push(...import_lodash.default.castArray(startUrl).map((item) => replacePlaceholder(item, port))); } const { ensureArray } = await Promise.resolve().then(() => __toESM(require("@modern-js/utils"))); const { openBrowser } = await Promise.resolve().then(() => __toESM(require("@modern-js/builder-shared"))); const openUrls = () => { for (const url of urls) { if (!openedURLs.includes(url)) { openBrowser(url); openedURLs.push(url); } } }; if (beforeStartUrl) { Promise.all(ensureArray(beforeStartUrl).map((fn) => fn())).then(openUrls); } else { openUrls(); } }); } }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { builderPluginStartUrl, replacePlaceholder });