To import css in node_modules to Svelte, you will need rollup-plugin or Svelte-preprocess.
Using rollup-plugin
Follow these steps –
Step1: Install rollup css plugin
npm install -D rollup-plugin-css-only
Step2: Open rollup.config.js
Now we need to edit rollup.config.js
file.
First, import rollup-plugin-css-only
at the top of the file and then go to plugins array and add a combined css path –
import css from "rollup-plugin-css-only"; .... .... plugins: [ css({ output: "public/build/combined.css" }), svelte({ ..... .....
With this change, Svelte will combine all the external css in node_modules
folder, and put it in public/build
folder with name combined.css
.
Step3: Put combined css file in index.html
Since we got the combined.css
file in previous step, now we need to add it to the index.html
file so that our website can use it.
<link rel="stylesheet" href="/build/combined.css" />
Step4: Use css
files in node_modules
to Svelte
Suppose you want to add bootstrap.css
in App.svelte
, then you can use this –
<script> import "../node_modules/bootstrap/dist/css/bootstrap.min.css";
Using svelte-preprocess
Svelte introduced proprocess
so that you can write your own preprocessor. It will help in using TypeScript, SCSS, PostCSS etc. You can learn more about it from official documentation and library page.
Follow these steps to import css from node_modules using svelte-preprocess –
Step1: Open rollup.config.js
file
In rollup.config.js file, import svelte-preprocess and include path of node_modules css –
import autoPreprocess from 'svelte-preprocess'; ... svelte({ preprocess: autoPreprocess({ postcss: true, scss: { includePaths: ['src', 'node_modules'] }, }) }), ...
Step2: Use css files in components
Now you can use css files in your components. For example, we can import bootstrap.css in App.svelte
like this –
<style lang="scss" global> @import '../node_modules/bootstrap/dist/css/bootstrap.min'; @import '../node_modules/bootstrap/scss/bootstrap.scss'; </style>
Note: Use lang="scss"
and global
in <style>
tag. Also, do not include .css
extension in the @import
statement.