vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
108 lines (107 loc) • 5.89 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.devConfig = devConfig;
exports.logDockerHint = logDockerHint;
const determineOptimizeDeps_js_1 = require("./determineOptimizeDeps.js");
const determineFsAllowList_js_1 = require("./determineFsAllowList.js");
const addSsrMiddleware_js_1 = require("../../shared/addSsrMiddleware.js");
const utils_js_1 = require("../../utils.js");
const loggerVite_js_1 = require("../../shared/loggerVite.js");
const isErrorDebug_js_1 = require("../../../shared/isErrorDebug.js");
const getHttpRequestAsyncStore_js_1 = require("../../shared/getHttpRequestAsyncStore.js");
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
if ((0, isErrorDebug_js_1.isErrorDebug)()) {
Error.stackTraceLimit = Infinity;
}
function devConfig() {
let config;
return [
{
name: 'vike:devConfig',
apply: utils_js_1.applyDev,
config() {
return {
appType: 'custom',
// TODO:v1-release: remove (AFAICT we only need to use config.optimizeDeps for the old design)
optimizeDeps: {
exclude: [
// We exclude Vike's client runtime to be able to use Vite's import.meta.glob()
'vike/client',
'vike/client/router',
// It seems like client-side/isomorphic imports also need to be excluded, in order to avoid the following:
// ```
// Client runtime loaded twice https://vike.dev/client-runtime-duplicated
// ```
'vike/routing',
'vike/getPageContext',
// We exclude @brillout/json-serializer and @brillout/picocolors to avoid:
// ```
// 9:28:58 AM [vite] ✨ new dependencies optimized: @brillout/json-serializer/parse
// 9:28:58 AM [vite] ✨ optimized dependencies changed. reloading
// ```
'@brillout/json-serializer/parse',
'@brillout/json-serializer/stringify',
'@brillout/picocolors',
// We exclude all packages that depend on any optimizeDeps.exclude entry because, otherwise, the entry cannot be resolved when using pnpm. For example:
// ```
// Failed to resolve import "@brillout/json-serializer/parse" from "../../packages/vike-react-query/dist/renderer/VikeReactQueryWrapper.js". Does the file exist?
// 343| // ../../node_modules/.pnpm/react-streaming@0.3.16_react-dom@18.2.0_react@18.2.0/node_modules/react-streaming/dist/esm/client/useAsync.js
// 344| import { parse as parse2 } from "@brillout/json-serializer/parse";
// ```
// The source map is confusing, the import actually lives at node_modules/.vite/deps/vike-react-query_renderer_VikeReactQueryWrapper.js which contains:
// ```js
// // ../../node_modules/.pnpm/react-streaming@0.3.16_react-dom@18.2.0_react@18.2.0/node_modules/react-streaming/dist/esm/client/useAsync.js
// import { parse as parse2 } from "@brillout/json-serializer/parse";
// ```
'react-streaming'
]
}
};
},
async configResolved(config_) {
config = config_;
await (0, determineOptimizeDeps_js_1.determineOptimizeDeps)(config);
await (0, determineFsAllowList_js_1.determineFsAllowList)(config);
if (!(0, isErrorDebug_js_1.isErrorDebug)()) {
await (0, getHttpRequestAsyncStore_js_1.installHttpRequestAsyncStore)();
(0, loggerVite_js_1.improveViteLogs)(config);
}
logDockerHint(config.server.host);
}
},
{
name: 'vike:devConfig:addSsrMiddleware',
apply: utils_js_1.applyDev,
// The SSR middleware should be last middleware
enforce: 'post',
configureServer: {
order: 'post',
handler(server) {
const hasHonoViteDevServer = !!config.plugins.find((p) => p.name === '@hono/vite-dev-server');
if (config.server.middlewareMode || hasHonoViteDevServer)
return;
return () => {
(0, addSsrMiddleware_js_1.addSsrMiddleware)(server.middlewares, config, false, null);
};
}
},
// Setting `configResolved.clearScreen = false` doesn't work
config: {
order: 'post',
handler() {
if ((0, isErrorDebug_js_1.isErrorDebug)()) {
return { clearScreen: false };
}
}
}
}
];
}
function logDockerHint(configHost) {
if ((0, utils_js_1.isDocker)()) {
(0, utils_js_1.assertWarning)(configHost, `Your app seems to be running inside a Docker or Podman container but ${picocolors_1.default.cyan('--host')} isn't set which means that your Vike app won't be accessible from outside the container, see https://vike.dev/docker`, { onlyOnce: true });
}
}