Project 1: I am developing a project frontend in v0 called “Workflow Builder”. And it has an interface to create workflows. Whole workflow logic is inside WorkflowBuilder.tsx component.
Project 2: I started a new project for the rest of application (user managament, other CRUDs, etc). I would like to maintain projects separated. For better project organization inside my tech structure.
Both projects are being created inside v0 product.
How could I import in “Project 2” components from “Project 1”?
It’s great to see you keeping your projects modular for better organization. To share components between Project 1 and Project 2 within the same tech structure, here are a few approaches you could consider:
Create a Shared Component Library:
Extract reusable components (like your WorkflowBuilder.tsx) into a shared library or package within your v0 product.
You can use a tool like Lerna or Turborepo to manage multiple projects/packages in a monorepo setup.
Once extracted, import the shared components into both Project 1 and Project 2 as needed.
Use Relative Paths for Simplicity:
If both projects exist in the same repository or directory structure, you can import components using relative paths. For example:
import WorkflowBuilder from '../Project1/components/WorkflowBuilder';
Be mindful of maintaining proper directory structure to avoid messy imports.
Set Up a Package in Your Project:
Package Project 1 components into a local npm package by creating a package.json inside the Project 1 folder.
Use npm/yarn to install the package locally in Project 2:
npm install ../Project1
This approach ensures clear separation but requires you to maintain versioning for shared components.
Leverage Module Aliases:
Configure your bundler (Webpack, Vite, etc.) or TypeScript to use aliases for easier imports. For example:
This keeps your import paths clean while maintaining project separation.
Which approach you choose depends on your team’s preferences and the scale of shared functionality. For larger, reusable components, a shared library is the most scalable option.
Hope this helps! Let me know if you’d like further clarification on any of the steps!