Combining Tailwind with Electron js
Installing latest tailwind with electron-react-boilerplate is not straightforward forward and all the tutorials on google were outdated. I finally figured it out on my own. Hence decided to write this to help fellow developers
Installation
I will assume in this blog that you know what is tailwind and how it works. Once you have your electron-react-boilerplate ready. In the root of your project folder type this into your terminal
yarn add -D tailwindcss postcss-loader autoprefixer postcss
Notice how all the installed libraries are devDependencies
. This is how Tailwind works, generating required CSS at build time.
Setup Webpack
Open the file .erb/configs/webpack.config.renderer.dev.ts
where we set up rules for generating the styles using the installed plugins and add these lines
add this line in module
object under rules > use array
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: [require('tailwindcss'), require('autoprefixer')],
},
},
Similarly add 'postcss-loader'
at the end of test: /\.s?css$/
Here’s how your file will look like after the above edits
webpack.config.renderer.dev.ts
module: {
rules: [
{
test: /\.s?(c|a)ss$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules: true,
sourceMap: true,
importLoaders: 1,
},
},
'sass-loader',
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: [require('tailwindcss'), require('autoprefixer')],
},
},
],
include: /\.module\.s?(c|a)ss$/,
},
{
test: /\.s?css$/,
use: ['style-loader', 'css-loader', 'sass-loader', 'postcss-loader'],
exclude: /\.module\.s?(c|a)ss$/,
},
// Fonts
{
test: /\.(woff|woff2|eot|ttf|otf)$/i,
type: 'asset/resource',
},
// Images
{
test: /\.(png|jpg|jpeg|gif)$/i,
type: 'asset/resource',
},
// SVG
{
test: /\.svg$/,
use: [
{
loader: '@svgr/webpack',
options: {
prettier: false,
svgo: false,
svgoConfig: {
plugins: [{ removeViewBox: false }],
},
titleProp: true,
ref: true,
},
},
'file-loader',
],
},
],
},
Post CSS configuration
In root of your project create postcss.config.js and paste the following code
const tailwindcss = require('tailwindcss');
module.exports = {
plugins: [tailwindcss('./tailwind.config.js')],
};
Setup Tailwind Config ( very important )
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ['./src/**/*.{html,jsx,tsx,ts}'],
theme: {
extend: {},
},
plugins: [],
};
Adding tailwind directives
Add these 3 lines of code to your App.css
and make sure it is being imported into App.tsx
@tailwind base;
@tailwind components;
@tailwind utilities;
Go to your App.tsx
and write some tailwind classes and voila it should be working now. Don’t forget to restart your application