iles
Version:
Vite & Vue powered static site generator with partial hydration
94 lines (92 loc) • 3 kB
JavaScript
// src/node/alias.ts
import { fileURLToPath } from "url";
import { createRequire } from "module";
import { join, dirname, resolve } from "pathe";
var _dirname = dirname(fileURLToPath(import.meta.url));
var require2 = createRequire(import.meta.url);
var PKG_ROOT = join(_dirname, "../../");
var CONFIG_PATH = join(PKG_ROOT, "config.js");
var TURBO_SCRIPT_PATH = join(PKG_ROOT, "turbo.js");
var DIST_CLIENT_PATH = join(_dirname, "../client");
var SHARED_PATH = join(DIST_CLIENT_PATH, "shared");
var APP_PATH = join(DIST_CLIENT_PATH, "app", "index.js");
var COMPONENTS_PATH = join(DIST_CLIENT_PATH, "app/components");
var APP_COMPONENT_PATH = join(COMPONENTS_PATH, "App.vue");
var ISLAND_COMPONENT_PATH = join(COMPONENTS_PATH, "Island.vue");
var NOT_FOUND_COMPONENT_PATH = join(COMPONENTS_PATH, "NotFound.vue");
var DEBUG_COMPONENT_PATH = join(COMPONENTS_PATH, "DebugPanel.vue");
var HYDRATION_DIST_PATH = join(dirname(require2.resolve("@islands/hydration/package.json")), "dist");
var APP_CONFIG_ID = "@islands/app-config";
var APP_CONFIG_REQUEST_PATH = `/${APP_CONFIG_ID}`;
var USER_APP_ID = "@islands/user-app";
var USER_APP_REQUEST_PATH = `/${USER_APP_ID}`;
var USER_SITE_ID = "@islands/user-site";
var USER_SITE_REQUEST_PATH = `/${USER_SITE_ID}`;
var NOT_FOUND_REQUEST_PATH = "@islands/components/NotFound";
function resolveAliases(root, userConfig) {
const paths = {
"/@shared": SHARED_PATH,
[USER_APP_ID]: USER_APP_REQUEST_PATH,
[USER_SITE_ID]: USER_SITE_REQUEST_PATH,
[APP_CONFIG_ID]: APP_CONFIG_REQUEST_PATH
};
const { srcDir = "src" } = userConfig;
const aliases = [
...Object.keys(paths).map((p) => ({
find: p,
replacement: paths[p]
})),
{
find: /^[~@]\//,
replacement: `${resolve(root, srcDir)}/`
},
{
find: /^iles$/,
replacement: join(DIST_CLIENT_PATH, "index")
},
{ find: /^iles\//, replacement: `${PKG_ROOT}/` },
// make sure it always use the same vue dependency that comes with
// iles itself
{
find: /^vue$/,
replacement: require2.resolve(
"@vue/runtime-dom/dist/runtime-dom.esm-bundler.js"
)
},
{
find: /^vue-router$/,
replacement: require2.resolve(
"vue-router/dist/vue-router.esm-bundler.js"
)
},
{
find: /^@islands\/hydration$/,
replacement: require2.resolve("@islands/hydration")
},
...["vue", "vanilla", "svelte", "preact", "solid"].map((name) => ({
find: new RegExp(`^@islands/hydration/${name}$`),
replacement: require2.resolve(`@islands/hydration/${name}`)
}))
];
return aliases;
}
export {
CONFIG_PATH,
TURBO_SCRIPT_PATH,
DIST_CLIENT_PATH,
SHARED_PATH,
APP_PATH,
APP_COMPONENT_PATH,
ISLAND_COMPONENT_PATH,
NOT_FOUND_COMPONENT_PATH,
DEBUG_COMPONENT_PATH,
HYDRATION_DIST_PATH,
APP_CONFIG_ID,
APP_CONFIG_REQUEST_PATH,
USER_APP_ID,
USER_APP_REQUEST_PATH,
USER_SITE_ID,
USER_SITE_REQUEST_PATH,
NOT_FOUND_REQUEST_PATH,
resolveAliases
};