@ribcage/config
v0.0.4
Published
Configuration schema and utilities for Ribcage projects
Downloads
5
Maintainers
Readme
@ribcage/config
Configuration schema and utilities for Ribcage projects.
Installation
npm install @ribcage/config
# or
bun add @ribcage/configUsage
Basic Configuration
Create a ribcage.config.ts file in your project root:
import { defineConfig } from "@ribcage/config";
export default defineConfig({
name: "my-project",
port: 3000,
routes_directory: "./src/app/routes",
});Advanced Configuration
import { defineConfig } from "@ribcage/config";
export default defineConfig({
name: "my-project",
port: 3000,
routes_directory: "./src/app/routes",
aliases: {
core: "@/core",
modules: "@/modules",
lib: "@/lib",
components: "@/components",
hooks: "@/hooks",
utils: "@/utils",
types: "@/types",
assets: "@/assets",
styles: "@/styles",
},
clients: {
analytics: {
posthog: true,
},
auth: {
supabase: true,
},
notifications: {
push: true,
},
},
});Dynamic Configuration
You can also export a function that returns the configuration:
import { defineConfig } from "@ribcage/config";
export default defineConfig(async () => {
const port = await getPortFromEnvironment();
return {
name: "my-project",
port,
routes_directory: "./src/app/routes",
};
});API Reference
defineConfig(config: RibcageConfigInput): RibcageConfigInput
Helper function to define your configuration with TypeScript type checking.
validateConfig(config: unknown): RibcageConfig
Validates a configuration object against the schema and returns a typed config.
isConfigFunction(config: RibcageConfigInput): config is ConfigFunction
Type guard to check if a configuration is a function.
Types
RibcageConfig- The main configuration typeConfigFunction- Type for configuration functionsRibcageConfigInput- Union type ofRibcageConfig | ConfigFunction
Schema
The configuration schema includes:
name(required): Project nameport: Server port (default: 8081)routes_directory: Directory containing route files (default: "./src/app/routes")aliases: Path aliases for module resolutionclients: Configuration for various client integrationsanalytics: Google Analytics, Mixpanel, Amplitudeauth: Supabase, Clerk, Firebasepayments: Stripe, PayPaldatabase: Supabase, Firebase, PlanetScalestorage: AWS S3, Cloudinarynotifications: Push notifications, Email
License
MIT
