question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Documentation needed for integration of Storybook + SvelteKit + Tailwind

See original GitHub issue

Is your feature request related to a problem? Please describe A lot has improved about the way Storybook recognizes the context in which it is being installed and then installs itself. However, not only a new version of Svelte is out (with which Storybook doesn’t work out of the box) but integrating Tailwind keeps being cumbersome and needing a lot of research and trial and error.

According to The State of CSS 2019 and 2010, Tailwind is the most used CSS framework. Components that are styled with Tailwind need consequently to be shown in Storybook with the same styles. Having documentation that enabled integrating these three technologies without too much trouble would be extremely appreciated.

Describe the solution you’d like I would like to see:

  • the Storybook installation script fixed for SvelteKit
  • documentation about integration with Tailwind in place or even an addon to implement this integration easily

Are you able to assist to bring the feature to reality? Possibly, with documentation. In Additional context I report on the solution I’ve implemented so far, just as a temporary workaround.

Additional context Currently, the following seem to be the necessary steps to get these three technologies to play well together:

  1. Install a clean new SvelteKit app: npm init svelte@next followed by npm i ✔ Which Svelte app template? › SvelteKit demo app ✔ Use TypeScript? … No ✔ Add ESLint for code linting? … Yes ✔ Add Prettier for code formatting? › Yes
  2. Install Storybook: npx sb@next init. npx sb init yelds similar results.
  3. Run Storybook: npm run storybook. This fails with ESM errors.
  4. Change the extensions of both .storybook/main.js and .storybook/preview.js to .cjs.
  5. Comment out "preprocess": require("../svelte.config.js").preprocess within svelteOptions. This and the previous step are documented as a workaround in Storybook cannot be built on packages using “type”: “module” #11587.
  6. Add PostCSS to Svelte using the [Svelte corresponding adder](npx svelte-add postcss): npx svelte-add postcss followed by npm i.
  7. Add Tailwind CSS to Svelte using the Svelte corresponding adder: npx svelte-add tailwindcss followed by npm i. JIT is still misbehaving so I would recommend avoiding using it while developing.
  8. At this point Tailwind doesn’t get fully integrated with SvelteKit. Tailwind styles need to be added to the apps. Add
    @tailwind base;
    @tailwind components;
    @tailwind utilities;
    
    to src/app.css. There’s a fix in progress for it, discussion at issue #42
  9. At this point Tailwind styles can be used within Svelte but Storybook is still unaware of them. In order to make it aware first import the application styles to .storybook/preview.cjs:
    import '../src/app.css';
    
  10. Also change .storybook/main.js according to the following example:
     const path = require('path');
    
     module.exports = {
    	stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx|svelte)'],
    	addons: ['@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-svelte-csf'],
    	svelteOptions: {
    		// "preprocess": require("../svelte.config.js").preprocess
    	},
    	webpackFinal: async (config) => {
    		// Remove the existing css rule
    		config.module.rules = config.module.rules.filter((f) => f.test.toString() !== '/\\.css$/');
    
    		config.module.rules.push({
    			rules: [
    				{
    					test: /\.css$/i,
    					use: ['style-loader', 'css-loader', 'postcss-loader']
    				}
    			],
    			include: path.resolve(__dirname, '../src')
    		});
    
    		return config;
    	}
    };
    

Issue Analytics

  • State:open
  • Created 2 years ago
  • Reactions:17
  • Comments:7 (2 by maintainers)

github_iconTop GitHub Comments

1reaction
benmccanncommented, Jun 24, 2022

@sveltejs/kit/experimental/vite has been released in @sveltejs/kit version 1.0.0-next.353 in part to provide improved Storybook support. Feedback welcome in https://github.com/sveltejs/kit/issues/5184

1reaction
madeleineostojacommented, Jul 4, 2021

Just FYI Sveltekit runtime modules are fixed if you use the Vite storybook builder, they won’t work with webpack

Read more comments on GitHub >

github_iconTop Results From Across the Web

Integrating Storybook with SvelteKit - CodingCat.dev
Brittney walks through how to get Storybook working in a new SvelteKit project.
Read more >
Integrating Storybook with SvelteKit - YouTube
... getting storybook integrated with SvelteKit.One of the amazing Svelte community members on Discord shared how to get Tailwind and the a.
Read more >
Integrate Tailwind CSS with Storybook
Integrate Tailwind CSS and Storybook. Tailwind CSS is a utility-first CSS framework packed with classes to build any design, directly in your markup....
Read more >
Storybook setup with Vite, Svelte Kit & Tailwind CSS
A working example of Storybook, with Vite, Svelte Kit and Tailwind CSS. I was struggling with... Tagged with storybook, svelte, vite, ...
Read more >
SvelteKit • Web development, streamlined
SvelteKit is the official Svelte application framework. ... read the docs ... Integrate with Tailwind and Playwright and Vitest and Storybook and, well, ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found