vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
78 lines (77 loc) • 3.04 kB
JavaScript
import '../assertEnvVite.js';
export { pluginDev };
export { logDockerHint };
import { optimizeDeps, resolveOptimizeDeps } from './pluginDev/optimizeDeps.js';
import { determineFsAllowList } from './pluginDev/determineFsAllowList.js';
import { addSsrMiddleware } from '../shared/addSsrMiddleware.js';
import { isDebugError } from '../../../utils/debug.js';
import { applyDev } from '../../../utils/isDev.js';
import { isDocker } from '../../../utils/isDocker.js';
import { assertWarning } from '../../../utils/assert.js';
import { interceptViteLogs } from '../shared/loggerVite.js';
import pc from '@brillout/picocolors';
import { swallowViteLogConnected, swallowViteLogConnected_clean } from '../shared/loggerVite.js';
function pluginDev() {
let config;
return [
{
name: 'vike:pluginDev',
apply: applyDev,
config: {
handler() {
return {
appType: 'custom',
...optimizeDeps,
};
},
},
configResolved: {
async handler(config_) {
config = config_;
await resolveOptimizeDeps(config);
await determineFsAllowList(config);
interceptViteLogs(config);
logDockerHint(config.server.host);
},
},
},
{
name: 'vike:pluginDev:post',
apply: applyDev,
// The SSR middleware should be last middleware
enforce: 'post',
configureServer: {
order: 'post',
handler(server) {
swallowViteLogConnected_clean(); // If inside a configureServer() `pre` hook => too early
const hasHonoViteDevServer = !!config.plugins.find((p) => p.name === '@hono/vite-dev-server');
if (config.server.middlewareMode || hasHonoViteDevServer)
return;
return () => {
addSsrMiddleware(server.middlewares, config, false, null);
};
},
},
// Setting `configResolved.clearScreen = false` doesn't work
config: {
order: 'post',
handler() {
if (isDebugError()) {
return { clearScreen: false };
}
},
},
configResolved: {
order: 'post',
handler() {
swallowViteLogConnected();
},
},
},
];
}
function logDockerHint(configHost) {
if (isDocker()) {
assertWarning(configHost, `Your app seems to be running inside a Docker or Podman container but ${pc.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 });
}
}