UNPKG

microsite

Version:
68 lines (67 loc) 3.83 kB
import { resolve, relative } from "path"; import module from "module"; const { createRequire } = module; const require = createRequire(import.meta.url); import { fileExists } from "./fs.js"; import { loadConfiguration as loadUserConfiguration } from "snowpack"; const pkg = require(resolve(process.cwd(), "package.json")); const DEFAULT_BASE_PATH = pkg.homepage || "/"; const _config = require("microsite/assets/snowpack.config.cjs"); export function resolveNormalizedBasePath(args) { var _a; let basePath = (_a = args["--base-path"]) !== null && _a !== void 0 ? _a : DEFAULT_BASE_PATH; return basePath === "/" ? basePath : `/${basePath.replace(/^\//, "").replace(/\/$/, "")}/`; } export async function loadConfiguration(mode) { const overrides = await getOverrides(mode); return loadUserConfiguration(overrides); } export async function getOverrides(mode) { var _a, _b, _c, _d; const [tsconfigPath] = await Promise.all([findTsOrJsConfig()]); const aliases = tsconfigPath ? resolveTsconfigPathsToAlias({ tsconfigPath }) : {}; switch (mode) { case "dev": return Object.assign(Object.assign({}, _config), { buildOptions: Object.assign(Object.assign({}, _config.buildOptions), { ssr: true }), packageOptions: Object.assign(Object.assign({}, _config.packageOptions), { external: [..._config.packageOptions.external].filter((v) => !v.startsWith("microsite")) }), plugins: [..._config.plugins], alias: Object.assign(Object.assign(Object.assign({}, aliases), ((_a = _config.alias) !== null && _a !== void 0 ? _a : {})), { "microsite/hydrate": "microsite/client/hydrate" }) }); case "build": return Object.assign(Object.assign({}, _config), { devOptions: Object.assign(Object.assign({}, _config.devOptions), { hmr: false, port: 0, hmrPort: 0 }), buildOptions: Object.assign(Object.assign({}, _config.buildOptions), { ssr: true }), plugins: [..._config.plugins], alias: Object.assign(Object.assign({}, aliases), ((_b = _config.alias) !== null && _b !== void 0 ? _b : {})), packageOptions: Object.assign(Object.assign({}, _config.packageOptions), { external: [..._config.packageOptions.external].filter((v) => v !== "preact"), rollup: Object.assign(Object.assign({}, ((_d = (_c = _config.installOptions) === null || _c === void 0 ? void 0 : _c.rollup) !== null && _d !== void 0 ? _d : {})), { plugins: [ { name: "@microsite/auto-external", options(opts) { return Object.assign({}, opts, { external: (source) => source.startsWith("preact"), }); }, }, ] }) }) }); } } const findTsOrJsConfig = async () => { const cwd = process.cwd(); const tsconfig = resolve(cwd, "./tsconfig.json"); if (await fileExists(tsconfig)) return tsconfig; const jsconfig = resolve(cwd, "./jsconfig.json"); if (await fileExists(jsconfig)) return jsconfig; return null; }; function resolveTsconfigPathsToAlias({ tsconfigPath = "./tsconfig.json", } = {}) { var _a, _b; let { baseUrl, paths } = (_b = (_a = require(tsconfigPath)) === null || _a === void 0 ? void 0 : _a.compilerOptions) !== null && _b !== void 0 ? _b : {}; if (!(baseUrl && paths)) return {}; baseUrl = resolve(process.cwd(), baseUrl); const aliases = {}; Object.keys(paths).forEach((item) => { const key = item.replace("/*", ""); const value = "./" + relative(process.cwd(), resolve(baseUrl, paths[item][0].replace("/*", "").replace("*", ""))); aliases[key] = value; }); return aliases; }