This repo shows how to use the CSS-in-JS library linaria
with Svelte v3. The example folder svelte-rollup
is generated from sveltejs/template and the example folder svelte-webpack
is generated from sveltejs/template-webpack.
Install the dependencies...
cd svelte-rollup
npm install
...then start Rollup:
npm run dev
Navigate to localhost:5000.
Take a look: d964432
Install linaria
and rollup-plugin-css-only
:
npm install -D linaria rollup-plugin-css-only
# OR
yarn add --dev linaria rollup-plugin-css-only
Update rollup.config.js
import svelte from 'rollup-plugin-svelte';
import css from 'rollup-plugin-css-only'; // for CSS bundling
import linaria from 'linaria/rollup';
const dev = process.env.NODE_ENV !== 'production';
export default {
...
plugins: [
svelte({
dev,
// allow `plugin-css-only` to bundle with CSS generated by linaria
emitCss: true,
}),
linaria({
sourceMap: dev,
}),
css({
output: '<OUT_FOLDER>/bundle.css',
}),
],
};
IMPORTANT: rollup-plugin-css-only
generates incorrect sourcemaps (see thgh/rollup-plugin-css-only#10). Use an alternative CSS plugin such as rollup-plugin-postcss
instead in the same way as above.
Install the dependencies...
cd svelte-webpack
npm install
...then start webpack:
npm run dev
Navigate to localhost:8080.
Take a look: 5ffd69d
Install linaria
:
npm install -D linaria
# OR
yarn add --dev linaria
Update webpack.config.js
:
const prod = process.env.NODE_ENV === 'production';
const linariaLoader = {
loader: 'linaria/loader',
options: {
sourceMap: !prod,
cacheDirectory: path.resolve(__dirname, 'node_modules/.cache/.linaria-cache')
}
};
module.exports = {
...
module: {
rules: [
{
test: /\.m?js$/,
exclude: /node_modules/,
use: [linariaLoader]
},
{
test: /\.svelte$/,
use: [
linariaLoader,
{
loader: 'svelte-loader',
options: {
dev: !prod,
emitCss: true,
hotReload: true
}
}
]
},
...(CSS rules)
]
}
}
All contributions are welcome. Please open an issue or PR if there's something that can be fixed.
Also, consider starring ⭐ this repo if it helped you!
The code in this repo is licensed under the MIT license.