Minimal Electron, React and Webpack boilerplate
Minimal Electron, React, PostCSS and Webpack boilerplate to help you get started with building your next app.
Table of contents
Install
Clone this repo
git clone https://github.com/alexdevero/electron-react-webpack-boilerplate.git
Install dependencies
npm install
or
yarn
Usage
Run the app
npm run start
or
yarn start
Build the app (automatic)
npm run package
or
yarn package
Build the app (manual)
npm run build
or
yarn build
npm run build
|| yarn run build
)
Test the app (after npm run prod
yarn prod
Add Sass
Adding Sass to boilerplate requires updating webpack configs and adding necessary loaders.
- To
webpack.build.config.js
andwebpack.dev.config.js
add new object torules
:
{
test: /\.scss$/,
use: [
{ loader: 'style-loader' },
{ loader: 'css-loader' },
{ loader: 'sass-loader' }],
include: defaultInclude
}
-
Install additional loaders for sass,
sass-loader
andnode-sass
. -
Rename all CSS file to
.scss
.
Add TailwindCSS
If you don't want to do all these steps, you can clone This Repository and you are good to go.
Adding TainwindCSS to boilerplate requires adding all the dependencies listed on the tailwindcss website for create react app
Official Guide. OR follow these steps
- install
tailwindcss
,postcss
andautoprefixer
.
npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
- Install
craco
.
npm install @craco/craco
-
Open
package.json
file, findstart
andbuild
scripts underscripts
. -
Add
&& craco start
at the end instart
andbuild
scripts. You also have to addbuild-css
script to build the CSS styles using tailwindCSS."build-css": "npx tailwindcss build -o src/styles/main.css",
. You can choose output folder of your own choice. Here are the three scripts after changing/adding.
"start": "cross-env NODE_ENV=development webpack serve --hot --host 0.0.0.0 --config=./webpack.dev.config.js --mode development && craco start",
"build": "cross-env NODE_ENV=production webpack --config webpack.build.config.js --mode production && craco build",
"build-css": "npx tailwindcss build -o src/styles/main.css",
- Now, create
craco.config.js
file in your project at root of your project and add the following.
module.exports = {
style: {
postcss: {
plugins: [
require('tailwindcss'),
require('autoprefixer'),
],
},
},
}
- Next, generate your tailwind.config.js file:
npx tailwindcss-cli@latest init
This will create a minimal tailwind.config.js file at the root of your project.
- (Optional) Configure Tailwind to remove unused styles in production
In your
tailwind.config.js
file, configure the purge option with the paths to all of your components so Tailwind can tree-shake unused styles in production builds:
// tailwind.config.js
module.exports = {
purge: [],
purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}
- Add
main.css
file inapp.js
. Make sure you choose correct path for CSS file.
import '../styles/main.css'
- You may have to run
npm install tailwindcss@latest postcss@latest autoprefixer@latest
if you face different version issues. - You can also check JIT Mode In TailwindCSS if you want to use Just In Time Mode.
Change app title
This boilerplate uses HTML Webpack Plugin to generate the HTML file of the app. Changing app title is possible only through webpack configs, webpack.build.config.js
and webpack.dev.config.js
. App title can be changed by adding objects of options.
In webpack.build.config.js
:
plugins: [
new HtmlWebpackPlugin({title: 'New app title '}),// Add this (line 41)
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: 'bundle.css',
chunkFilename: '[id].css'
}),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
}),
new BabiliPlugin()
],
In webpack.dev.config.js
:
plugins: [
new HtmlWebpackPlugin({title: 'New app title '}),// Add this (line 36)
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('development')
})
],
Contact and Support
I want your feedback! Here's a list of different ways to me and request help:
- Report bugs and submit feature requests to GitHub issues.
- And do not forget to follow @alexdevero on Twitter!
If you feel generous and want to show some extra appreciation:
Code of Conduct
Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
License
MIT © Alex Devero.