Setup TailwindCSS With Next.js

in Learn2codelast month

After learning about Tailwind CSS from Epic Web Conference, it piqued my curiosity so here I am trying to learn more about how it works. But first, we need to set it up.

There are probably a ton of installation tutorials out there but I want to document mine.

Installing TailwindCSS With Next.js

Create a new Next.js project

Start by creating a new Next.js project with this command.
I used tailwind-next as my project name. I added typescript because I want to use it in this project.

npx create-next-app@latest tailwind-next --typescript --eslint

It will show the following output:

Need to install the following packages:
  create-next-app@14.2.15
Ok to proceed? (y) y
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '[email protected]',
npm WARN EBADENGINE   required: { node: '>=18.17.0' },
npm WARN EBADENGINE   current: { node: 'v18.16.1', npm: '9.5.1' }
npm WARN EBADENGINE }
✔ Would you like to use Tailwind CSS? … Yes
✔ Would you like to use `src/` directory? … Yes
✔ Would you like to use App Router? (recommended) … Yes
✔ Would you like to customize the default import alias (@/*)? … No

As of today, create-next-app is in version 14.2.15 which is the latest. We specified to use the latest when we invoked the command to install. You can change the version in here. For a list of available versions, always check the npm package.

You also have to select the answers to the questions. The answers you put here will matter. I retained my choices above.

When this shows, our directory is now ready!

Success! Created tailwind-next at /path/to/tailwind-next

Install and initialize Tailwind

Go to the directory and let's install and initialize Tailwind.

cd tailwind-next
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

Update the config file.

Update the tailwind config file to include the paths. The filename should be tailwind.config.js.

FromTo
content: []content: ["./src/*/.{js,ts,jsx,tsx,mdx}"]

Verify the tailwind directives are configured

Make sure the tailwind directives are in the globals.css file. In my case, it's found in src/app.

@tailwind base;
@tailwind components;
@tailwind utilities;

Run the project

Start the project.

npm run dev

In my case, after trying to start the project, I was prompted my version of Node.js is not compatible with the installed Next.js.

% npm run dev

> tailwind-next@0.1.0 dev
> next dev

You are using Node.js 18.16.1. For Next.js, Node.js version >= v18.17.0 is required.

So I had to install a new version. Good thing I'm using nvm so I confirmed the installed versions on my device and checked if I installed the v18.17.0.

% nvm list
         v4.0.0
       v16.20.1
       v18.16.0
->     v18.16.1

As expected, I don't have it so I had to install and switch to that version.

% nvm install 18.17.0
Downloading and installing node v18.17.0...
...
Now using node v18.17.0 (npm v9.6.7)

To verify if it's now using the intended version, I ran the node version check.

% node -v
v18.17.0

Now we're finally ready to meet the new project!

% npm run dev

> tailwind-next@0.1.0 dev
> next dev

  ▲ Next.js 14.2.15
  - Local:        http://localhost:3000

 ✓ Starting...
 ✓ Ready in 2.3s

Access the page in the browser

After accessing localhost, I'm greeted with the default page.

http://localhost:3000

image.png

Ready to work!

Start playing with the page.

I removed the code found in src/app/page.tsx and replaced it with the following code:

export default function Home() {
  return (
    <div className="grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen">
      <main className="row-start-2 items-center">
        Hello world!
      </main>
    </div>
  );
}

I just want to replace the entire page with a Hello world! in the center. I'm still learning so I just experimented with the classNames and retained what I think works.

With this code, the page looks like this now:

PC mode:

image.png

Smartphone mode:

image.png

Sweet! Now I can start learning more about Tailwind from here!


Thanks for reading!
See you around! じゃあ、またね!


All photos are screenshots from my code unless stated otherwise.

Sort:  

Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!

Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).

You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support. 
 

Congratulations @wittythedev! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You distributed more than 5000 upvotes.
Your next target is to reach 6000 upvotes.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP