Concept Studio Unified Ecommerce Package - Access all shop implementations via versioned exports
npm install @weareconceptstudio/ecommerceUnified Ecommerce Package - Access all shop implementations via versioned or named exports.
Previously, you had to import from different packages:
- @weareconceptstudio/catalog for catalog implementation
- @weareconceptstudio/shop for shop implementation
- And potentially more implementations with different names
This made it hard to manage and switch between implementations.
This unified package provides a single entry point with versioned exports, so you can:
- Use versioned exports (/v1, /v2, etc.) for consistent naming
- Use named exports (/catalog, /shop) for semantic clarity
- Easily add new implementations without changing the API
``bash`
npm install @weareconceptstudio/ecommerce
`typescript
// v1 - Catalog implementation
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/v1';
// v2 - Shop implementation
import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/v2';
// Future implementations
import { NewShopProvider } from '@weareconceptstudio/ecommerce/v3';
`
`typescript
// Catalog implementation
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/catalog';
// Shop implementation
import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/shop';
`
`typescript`
// Default export includes v1 (catalog) exports
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce';
- Package: @weareconceptstudio/catalogCatalogProvider
- Provider: CatalogTemplate
- Template:
- Use case: Original catalog implementation
- Package: @weareconceptstudio/shopShopProvider
- Provider: CategoryTemplate
- Template:
- Use case: Modern shop implementation
When you need to add a new implementation (e.g., v3):
1. Create a new file: src/v3/index.ts`
2. Re-export from the new package:
typescript`
export * from '@weareconceptstudio/new-shop-package';
package.json
3. Add export to :`
json`
"./v3": {
"types": "./dist/v3/index.d.ts",
"default": "./dist/v3/index.js"
}
./new-shop
4. Optionally add a named export (e.g., )
`tsx
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/v1';
function App() {
return (
categories={categories}
ingredients={ingredients}
tags={tags}
slug={slug}
/>
);
}
`
`tsx
import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/v2';
function App() {
return (
router={router}
searchParams={searchParams}
pathname={pathname}
/>
);
}
`
Before:
`typescript`
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/catalog';
After:
`typescript`
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/v1';
// or
import { CatalogProvider, CatalogTemplate } from '@weareconceptstudio/ecommerce/catalog';
Before:
`typescript`
import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/shop';
After:
`typescript``
import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/v2';
// or
import { ShopProvider, CategoryTemplate } from '@weareconceptstudio/ecommerce/shop';
1. Consistent API: All implementations accessed via the same package
2. Versioned: Easy to track which implementation you're using
3. Extensible: Add new implementations without breaking changes
4. Backward Compatible: Default export maintains v1 compatibility
5. Type Safe: Full TypeScript support with proper type exports