Skip to content
This repository was archived by the owner on May 8, 2021. It is now read-only.

Commit 2e13432

Browse files
committed
add gridsome example
1 parent 1b66bad commit 2e13432

File tree

13 files changed

+10586
-66
lines changed

13 files changed

+10586
-66
lines changed

examples/gridsome/README.md

Lines changed: 101 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,106 @@
1-
# Default starter for Gridsome
1+
# gridsome
22

3-
This is the project you get when you run `gridsome create new-project`.
3+
If you don't have an existing Gridsome project, check out their docs on how to get started.
44

5-
### 1. Install Gridsome CLI tool if you don't have
5+
Once you have a Gridsome site, install Tailwind by running this in the root of the project:
66

7-
`npm install --global @gridsome/cli`
7+
```
8+
npm install tailwindcss
9+
```
810

9-
### 2. Create a Gridsome project
11+
More than likely, you want to use PurgeCSS as well, so let's install that too:
1012

11-
1. `gridsome create my-gridsome-site` to install default starter
12-
2. `cd my-gridsome-site` to open the folder
13-
3. `gridsome develop` to start a local dev server at `http://localhost:8080`
14-
4. Happy coding 🎉🙌
13+
```
14+
npm install @fullhuman/postcss-purgecss
15+
```
16+
17+
Next, initialize your Tailwind config:
18+
19+
```
20+
./node_modules/.bin/tailwind init
21+
```
22+
23+
Then in `gridsome.config.js`, require Tailwind and add it as a PostCSS plugin, as well as our PurgeCSS config:
24+
25+
```js
26+
// gridsome.config.js
27+
const purgecss = require('@fullhuman/postcss-purgecss')
28+
const tailwind = require('tailwindcss')
29+
30+
const postcssPlugins = [
31+
tailwind('./tailwind.config.js'),
32+
]
33+
34+
// add purgecss only when building for production
35+
if (process.env.NODE_ENV === 'production') postcssPlugins.push(purgecss())
36+
37+
module.exports = {
38+
css: {
39+
loaderOptions: {
40+
postcss: {
41+
plugins: postcssPlugins,
42+
},
43+
},
44+
},
45+
}
46+
```
47+
48+
Now let's create a `purgecss.config.js` file to define some options for PurgeCSS:
49+
50+
```js
51+
// purgecss.config.js
52+
53+
class TailwindExtractor {
54+
static extract(content) {
55+
return content.match(/[A-z0-9-:\\/]+/g)
56+
}
57+
}
58+
59+
module.exports = {
60+
content: [
61+
'./src/**/*.vue',
62+
'./src/**/*.js',
63+
'./src/**/*.jsx',
64+
'./src/**/*.html',
65+
'./src/**/*.pug',
66+
'./src/**/*.md',
67+
],
68+
whitelist: [
69+
'body',
70+
'html',
71+
'img',
72+
'a',
73+
'g-image',
74+
'g-image--lazy',
75+
'g-image--loaded',
76+
],
77+
extractors: [
78+
{
79+
extractor: TailwindExtractor,
80+
extensions: ['vue', 'js', 'jsx', 'md', 'html', 'pug'],
81+
},
82+
],
83+
}
84+
```
85+
86+
Next up, we'll create a file at `src/assets/tailwind.css`:
87+
88+
```css
89+
@tailwind base;
90+
@tailwind components;
91+
@tailwind utilities;
92+
```
93+
94+
Finally, we'll import that into our `src/main.js` file:
95+
96+
```js
97+
import DefaultLayout from '~/layouts/Default.vue'
98+
import '~/assets/tailwind.css'
99+
100+
export default function (Vue, { router, head, isClient }) {
101+
// Set default layout as a global component
102+
Vue.component('Layout', DefaultLayout)
103+
}
104+
```
105+
106+
Now you should be all set to start using Tailwind and PurgeCSS in your Gridsome project!

examples/gridsome/gridsome.config.js

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
1-
// This is where project configuration and plugin options are located.
2-
// Learn more: https://gridsome.org/docs/config
1+
const purgecss = require('@fullhuman/postcss-purgecss')
2+
const tailwind = require('tailwindcss')
33

4-
// Changes here require a server restart.
5-
// To restart press CTRL + C in terminal and run `gridsome develop`
4+
const postcssPlugins = [
5+
tailwind('./tailwind.config.js'),
6+
]
7+
8+
// add purgecss only when building for production
9+
if (process.env.NODE_ENV === 'production') postcssPlugins.push(purgecss())
610

711
module.exports = {
8-
siteName: 'Gridsome',
9-
plugins: []
10-
}
12+
siteName: 'Gridsome Tailwind Setup',
13+
css: {
14+
loaderOptions: {
15+
postcss: {
16+
plugins: postcssPlugins,
17+
},
18+
},
19+
},
20+
}

0 commit comments

Comments
 (0)