b0nes
Version:
Zero-dependency component library and SSR/SSG framework
54 lines (45 loc) • 1.53 kB
JavaScript
// src/framework/config/env.js
/**
* Environment configuration for b0nes
* Detects if we're in dev, production, or library mode
*/
export const ENV = {
// Are we in Node.js?
isNode: typeof process !== 'undefined' && process.versions?.node,
// Are we in the browser?
isBrowser: typeof window !== 'undefined',
// Development mode (running from src/)
isDev: process.env.NODE_ENV === 'development' ||
process.env.npm_lifecycle_event === 'dev' ||
process.env.npm_lifecycle_event === 'dev:watch',
// Production mode (built to public/)
isProd: process.env.NODE_ENV === 'production',
// Library mode (installed via npm)
isLibrary: process.env.npm_package_name !== 'b0nes',
// Get base path for imports
getBasePath() {
if (this.isBrowser) {
return '/'; // Browser always uses root-relative
}
if (this.isDev) {
return '/src/framework/'; // Dev mode: source files
}
if (this.isProd) {
return '/public/'; // Production: built files
}
return '/'; // Fallback
}
};
// Helper to resolve paths
export const resolvePath = (path) => {
if (ENV.isBrowser) {
// Browser: always root-relative
return path.startsWith('/') ? path : `/${path}`;
}
if (ENV.isDev) {
// Dev: resolve from src/framework/
return path.replace(/^\//, '/src/framework/');
}
// Production/Library: use as-is
return path;
};