vue-wrapper-framework
v1.0.4
Published
Vue Wrapper framework for Micro frontends
Downloads
13
Readme
Vue Wrapper Framework
A flexible and modular Vue.js framework for building micro-frontend applications with TypeScript support. This framework enables you to create scalable applications by dynamically importing independent features as needed.
Features
- 🎯 Dynamic micro-frontend loading
- 🔒 Type-safe with full TypeScript support
- 🎨 Customizable theming
- 📦 Pre-built modular components
- 🛠️ CLI tools for project management
- 🔌 Easy-to-use plugin system
- 📱 Responsive design ready
Installation
# Create a new project
npx @arrkid/vue-wrapper create my-app
# Navigate to project directory
cd my-app
# Start development server
npm run devAvailable Features
Currently, the framework includes two pre-built features:
Feature A: Counter
A simple counter component demonstrating state management and event handling.
npx vue-wrapper import featureAFeature B: Todo List
A fully functional todo list with add, remove, and toggle capabilities.
npx vue-wrapper import featureBBasic Usage
<template>
<FrameworkWrapper :config="config">
<template #header>
<nav>
<!-- Your navigation -->
</nav>
</template>
<router-view></router-view>
<template #footer>
<footer>
<!-- Your footer -->
</footer>
</template>
</FrameworkWrapper>
</template>
<script setup lang="ts">
import { FrameworkWrapper } from '@yourusername/vue-wrapper-framework';
const config = {
features: ['featureA', 'featureB'],
theme: {
primary: '#42b883',
secondary: '#35495e'
}
};
</script>Configuration
The framework accepts a configuration object with the following options:
interface WrapperConfig {
// List of features to load
features?: string[];
// Theme configuration
theme?: {
primary: string;
secondary: string;
};
}Creating Custom Features
- Create a new feature module:
import type { FeatureModule } from '@yourusername/vue-wrapper-framework';
const myFeature: FeatureModule = {
name: 'myFeature',
component: MyComponent,
routes: [
{
path: '/my-feature',
component: MyComponent
}
],
async setup() {
// Initialization logic
}
};
export default myFeature;- Register your feature in the wrapper configuration:
const config = {
features: ['myFeature'],
// ... other config options
};CLI Commands
# Create a new project
npx vue-wrapper create my-app
# Import features
npx vue-wrapper import featureA featureB
# Add a new feature (scaffolding)
npx vue-wrapper generate feature my-featureProject Structure
my-app/
├── src/
│ ├── components/
│ │ └── FrameworkWrapper.vue
│ ├── features/
│ │ ├── featureA/
│ │ └── featureB/
│ ├── core/
│ │ ├── createApp.ts
│ │ ├── featureLoader.ts
│ │ └── store.ts
│ └── types/
│ └── index.ts
├── package.json
└── vite.config.tsDevelopment
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Run tests
npm testBest Practices
Feature Independence: Each feature should be self-contained with its own components, styles, and logic.
Type Safety: Always use TypeScript interfaces and types for component props and state.
Error Handling: Implement error boundaries and loading states for feature imports.
Performance: Use lazy loading for features that aren't immediately needed.
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
For support, please:
- Check the documentation
- Open an issue
- Submit a feature request
- Contribute to the project
Acknowledgments
- Vue.js team for the amazing framework
- All contributors who have helped shape this project
- The Vue community for inspiration and support
Author
[Your Name]
- GitHub: @eliemugenzi
- npm: @eliemugenzi
