Skip to content

Instantly share code, notes, and snippets.

@zhanang19
Last active May 30, 2020 13:18
Show Gist options
  • Save zhanang19/ce1aaf4c4c451f48476d07060f14ba83 to your computer and use it in GitHub Desktop.
Save zhanang19/ce1aaf4c4c451f48476d07060f14ba83 to your computer and use it in GitHub Desktop.
Tailwind + Laravel Mix setup

Tailwind + Laravel Mix Setup

This is a gist to setup TailwindCSS on your Laravel project. Give me an advice if you have a better idea about this.

How to Use

  • Copy and compare this file to your Laravel project
  • Run yarn run dev:css to build dev version
  • Run yarn run build:css to build production-ready version

Donate

License

The MIT License (MIT)

{
"main": "postcss.config.js",
"private": true,
"scripts": {
"del:js": "rimraf tailwind.config.js",
"create:js": "./node_modules/.bin/tailwind init tailwind.config.js",
"dev:css": "./node_modules/.bin/tailwind build tailwind.config.css -c tailwind.config.js -o public/css/tailwind.css",
"build:css": "postcss tailwind.config.css -o public/css/tailwind.min.css",
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"dependencies": {
"autoprefixer": "^9.6.0",
"postcss-cli": "^6.1.2",
"rimraf": "^2.6.3"
},
"devDependencies": {
"@fullhuman/postcss-purgecss": "^1.2.0",
"axios": "^0.18",
"cross-env": "^5.1",
"cssnano": "^4.1.10",
"laravel-mix": "^4.0.14",
"laravel-mix-purgecss": "^4.1",
"laravel-mix-tailwind": "^0.1.0",
"lodash": "^4.17.5",
"resolve-url-loader": "^2.3.1",
"sass": "^1.15.2",
"sass-loader": "^7.1.0",
"tailwindcss": "^1.0.3"
}
}
/**
* Big thanks to the instructions here!
* https://flaviocopes.com/tailwind-setup/
*/
const tailwindcss = require('tailwindcss')
const purgecss = require('@fullhuman/postcss-purgecss')
const cssnano = require('cssnano')
const autoprefixer = require('autoprefixer')
/**
* Custom PurgeCSS Extractor
* https://github.com/FullHuman/purgecss
* https://github.com/FullHuman/purgecss-webpack-plugin
*/
class TailwindExtractor {
static extract(content) {
return content.match(/[A-z0-9-:\/]+/g);
}
}
module.exports = {
plugins: [
tailwindcss('tailwind.config.js'),
cssnano({
preset: 'default',
}),
purgecss({
content: [
'dist/**/*.html',
'dist/**/*.php'
],
extractors: [{
extractor: TailwindExtractor,
extensions: ["html", "js", "php", "vue"]
}]
}),
autoprefixer
]
}
module.exports = {}
const mix = require('laravel-mix');
require('laravel-mix-tailwind');
require('laravel-mix-purgecss');
/*
|--------------------------------------------------------------------------
| Mix Asset Management
|--------------------------------------------------------------------------
|
| Mix provides a clean, fluent API for defining some Webpack build steps
| for your Laravel application. By default, we are compiling the Sass
| file for the application as well as bundling up all the JS files.
|
*/
mix.scripts(['resources/js/app.js', 'resources/js/navbar.js'], 'public/js/app.js')
.js('resources/js/admin.js', 'public/js/admin.js')
.postCss('resources/css/app.css', 'public/css')
.tailwind('./tailwind.config.js');
if (mix.inProduction()) {
mix
.version()
.purgeCss();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment