|
1 | | -# gridsome |
| 1 | +# Gridsome |
2 | 2 |
|
3 | 3 | If you don't have an existing Gridsome project, check out their docs on how to get started. |
4 | 4 |
|
5 | | -Once you have a Gridsome site, install Tailwind by running this in the root of the project: |
| 5 | +This plugin makes use of the gridsome-plugin-tailwindcss plugin to add |
| 6 | +*Tailwind*, *PurgeCSS*, *postcss-preset-env*, and *postcss-import* to your build chain. |
| 7 | +It includes both *gridsome-plugin-tailwindcss* and the regular *tailwindcss* so |
| 8 | +that you can write your own plugins and access the default config in |
| 9 | +`tailwind.config.js`. |
6 | 10 |
|
7 | | -``` |
8 | | -npm install tailwindcss |
9 | | -``` |
10 | | - |
11 | | -More than likely, you want to use PurgeCSS as well, so let's install that too: |
12 | | - |
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: |
| 11 | +This best way to get going is to add this line to import Tailwind's directives in `src/main.js`: |
24 | 12 |
|
25 | 13 | ```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 | | -} |
| 14 | +import 'tailwindcss/tailwind.css' |
46 | 15 | ``` |
47 | 16 |
|
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 | | -``` |
| 17 | +It's recommended to use `tailwind.config.js` to add [global base styles](https://tailwindcss.com/docs/adding-base-styles#using-a-plugin), |
| 18 | +components, utilities instead of adding them in CSS files. |
85 | 19 |
|
86 | | -Next up, we'll create a file at `src/assets/tailwind.css`: |
| 20 | +Or add the directives somewhere in your CSS. |
87 | 21 |
|
88 | 22 | ```css |
89 | 23 | @tailwind base; |
90 | 24 | @tailwind components; |
91 | 25 | @tailwind utilities; |
92 | 26 | ``` |
93 | 27 |
|
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! |
| 28 | +Now you should be all set to start using Tailwind, postcss-preset-env, postcss-import, and PurgeCSS in your Gridsome project! |
0 commit comments