Weclome to the Atelier!
Atelier (French word for workbench or workshop) is a simple UI component explorer, like angular-playground react-cosmos, storybook, styleguidist, svench or chromatic.
A workbench help you implementing Component Driven Development: crafting reusable UI components in isolation.
Atelier is based on [Vite] JavaScript bundler.
Install the plugin for Vite and Svelte bindings.
npm i -D @atelier-wb/vite-plugin-atelier @atelier-wb/svelte
Register the plugin in vite.config.js
file:
import svelte from '@sveltejs/vite-plugin-svelte'
// other vite plugins
import atelier from '@atelier-wb/vite-plugin-atelier'
export default defineConfig({
plugins: [svelte(), /* other plugins */ atelier()]
})
Next to your vite.config.js
file, creates a folder named atelier
Assuming the components you'd like to test is located in src/MyComponent.svelte
, create a file names atelier/MyComponent.tools.svelte
and set its content to:
<script>
import { Tool } from '@atelier-wb/svelte'
import MyComponent from '../src/MyComponent.svelte'
</script>
<Tool name="Components/My component" component={MyComponent} />
Start vite, and navigate to http://localhost:3000/atelier
To export your atelier as a static website in dist-atelier
folder, run this command:
vite build --mode export-atelier
Expose it with a plain http server (npx -y serve dist-atelier
for example) to enjoy it!
Now, let's talk about the elephant in the room: Storybook is a wonderful tool.
In my experience, Storybook does not bring an enjoyable developer experience, mostly because of webpack (as the time of writing). A lot of people throw a lot of effort to improve it for common cases, leading to powerfull starterkits like create-react-app, and many blogpost (try searching for "storybook + nextjs" 😉).
However, if your project is not react-based, you're very likely to be forced rewriting an entire webpack configuration, leading to a very fragile and unefficient setup. On medium-sized code base, build time is significant, and becomes a barrier to CDD.
Atlier seamlessly integrates with Vite bundler, and give you back control.