Create Empty Project
These steps will help you understand how to install and configure the SASS preprocessor and PurgeCSS postprocessor to remove unused CSS classes from WEAVV.
Let's Get Started
Create a new empty project directory.
$ mkdir new-project
$ cd new-project
# YARN
$ yarn init -y
# NPM
$ npm init -y
Install mandatory gulp node modules.
# YARN
$ yarn add gulp node-sass gulp-sass gulp-sass-glob gulp-postcss gulp-purgecss gulp-rename autoprefixer --dev
# NPM
$ npm i gulp node-sass gulp-sass gulp-sass-glob gulp-postcss gulp-purgecss gulp-rename autoprefixer --save-dev
Create an empty gulpfile.js task file.
$ nano gulpfile.js
In the gulpfile.js, add these lines below to the file.
const gulp = require('gulp')
const sass = require('gulp-sass')(require('node-sass'))
const sassGlob = require('gulp-sass-glob')
const postCss = require('gulp-postcss')
const purgeCss = require('gulp-purgecss')
const autoPrefixer = require('autoprefixer')
const rename = require('gulp-rename')
// SASS Preprocessor
gulp.task('sass', () => {
return gulp.src('node_modules/weavv-css/weavv.scss')
.pipe(sassGlob())
.pipe(sass({ outputStyle: 'compressed' })
.on('error', sass.logError))
.pipe(postCss([autoPrefixer()]))
// export `.scss` to `.css` in directory `css/`
.pipe(rename('style.css'))
.pipe(gulp.dest('css'))
})
// Remove unused CSS Classes
gulp.task('purge-css', () => {
return gulp.src('css/style.css')
.pipe(purgeCss({
content: [
'index.html'
],
defaultExtractor: content => content.match(/[w-/:()]+(?<!:)/g) || [],
// add whitelisting e.g. '/-webkit-scrollbar-thumb$/'
whitelistPatterns: [],
keyframes: true
}))
// export new CSS in directory `css/`
.pipe(rename('style.css'))
.pipe(gulp.dest('css'))
})
Install weavv-css module.
# YARN
$ yarn add weavvcss
# NPM
$ npm i weavvcss
Create a new directory for exported or preprocessed CSS.
$ mkdir css
Create an empty index.html file.
$ nano index.html
Add the basic HTML template below to the index.html. And import the final build CSS file css/styles.css with <link> tag.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content=" width=device-width, initial-scale=1.0, maximum-scale=1.0">
<link defer href="css/style.css" rel="stylesheet" rel="preload" as="style" media="all">
</head>
<body></body>
</html>
Your new project setup is now ready for SASS preprocessing and purging unused CSS with the PurgeCSS.
Run the command below and check the CSS file located in css/style.css has only a few CSS classes that take a few couple hundred bytes of file size. The rest has stripped down by the PurgeCSS that refers to the target .html files.
# build WEAVV CSS
$ gulp sass
# create new `style.css` and remove
# unused CSS classes from `index.html`
$ gulp purge-css
Try to add a new line in the <body> tag.
<div class="text-xl-2">
TEXT
</div>
Try run the build command again. This time the css/style.css file has added more CSS classes that index.html is being used.
# build WEAVV CSS
$ gulp sass
# create new `style.css` and remove
# unused CSS classes from `index.html`
$ gulp purge-css