UNPKG

@twotwoba/vv-cli

Version:

Easily create Vite + React19/Vue3 web/h5/mini-program/chrome-extension projects.

218 lines (158 loc) 4.45 kB
# Quick Start Guide Welcome to your new UI Component Library! This guide will help you get started quickly. ## 🚀 Getting Started ### 1. Install Dependencies ```bash pnpm install ``` This will install all dependencies for the monorepo, including both the component library and the playground. ### 2. Start Development ```bash pnpm dev ``` This starts the playground at http://localhost:5173 where you can see and test your components. ## 📦 Project Overview This is a **pnpm monorepo** with the following structure: ``` your-project/ ├── packages/components/ # Your component library (publishable to npm) ├── playground/ # Development environment to test components ├── pnpm-workspace.yaml # Monorepo configuration └── package.json # Root package with scripts ``` ## 🎨 Adding Your First Component Let's add a new `Card` component as an example: ### Step 1: Create Component Files Create `packages/components/src/card/card.vue`: ```vue <template> <div class="ui-card"> <div v-if="$slots.header" class="ui-card__header"> <slot name="header" /> </div> <div class="ui-card__body"> <slot /> </div> </div> </template> <script setup lang="ts"> export interface CardProps { shadow?: 'always' | 'hover' | 'never' } withDefaults(defineProps<CardProps>(), { shadow: 'always' }) </script> <style scoped> .ui-card { background: #fff; border-radius: 4px; border: 1px solid #ebeef5; overflow: hidden; } .ui-card__header { padding: 18px 20px; border-bottom: 1px solid #ebeef5; } .ui-card__body { padding: 20px; } </style> ``` ### Step 2: Create Export File Create `packages/components/src/card/index.ts`: ```typescript import { App } from 'vue' import Card from './card.vue' Card.install = (app: App) => { app.component('UiCard', Card) } export { Card } export default Card export type { CardProps } from './card.vue' ``` ### Step 3: Export from Main Entry Edit `packages/components/src/index.ts`: ```typescript import type { App } from 'vue' import { Button } from './button' import { Input } from './input' import { Card } from './card' // Add this const components = [Button, Input, Card] // Add Card here const install = (app: App) => { components.forEach((component) => { app.component(component.name || '', component) }) } export { Button, Input, Card } // Export Card export default { install } ``` ### Step 4: Test in Playground Edit `playground/src/App.vue` to test your new component: ```vue <template> <ui-card> <template #header> <h3>Card Title</h3> </template> <p>Card content goes here</p> </ui-card> </template> <script setup lang="ts"> import { Card as UiCard } from 'ui-component-library' </script> ``` ## 🔨 Building for Production ### Build the Library ```bash pnpm build ``` This creates: - `packages/components/es/` - ES modules (for modern bundlers) - `packages/components/lib/` - CommonJS (for older tools) - Type definitions (.d.ts files) ### Build All Packages ```bash pnpm build:all ``` ## 📤 Publishing to npm ### 1. Update Package Info Edit `packages/components/package.json`: ```json { "name": "@yourscope/your-ui-lib", "version": "1.0.0", "description": "Your awesome UI library", "author": "Your Name <your.email@example.com>", "repository": { "type": "git", "url": "https://github.com/yourusername/your-ui-lib" } } ``` ### 2. Build ```bash pnpm build ``` ### 3. Publish ```bash cd packages/components npm publish --access public ``` ## 💡 Tips 1. **Hot Reload**: The playground has HMR, so changes to components update instantly 2. **Type Safety**: Use TypeScript interfaces for all props 3. **Naming**: Prefix components with `Ui` to avoid naming conflicts 4. **Styles**: Use scoped styles to prevent CSS conflicts 5. **Documentation**: Update the README when adding new components ## 📚 Next Steps - Read [DEVELOPMENT.md](./DEVELOPMENT.md) for detailed development guide - Check [packages/components/README.md](./packages/components/README.md) for usage examples - Explore the existing Button and Input components as references ## 🆘 Need Help? - Check the Vite documentation: https://vite.dev - Vue 3 documentation: https://vuejs.org - pnpm workspaces: https://pnpm.io/workspaces Happy coding! 🎉