<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Khushal Sarode</title>
    <description>The latest articles on DEV Community by Khushal Sarode (@khushalsarode).</description>
    <link>https://dev.to/khushalsarode</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F953256%2Fcea4963f-1a44-4f64-af20-00b39982e711.jpg</url>
      <title>DEV Community: Khushal Sarode</title>
      <link>https://dev.to/khushalsarode</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/khushalsarode"/>
    <language>en</language>
    <item>
      <title>Passion Uncorked — I Built an App That Ages Your Passion Into Wine or Forges It Into Steel</title>
      <dc:creator>Khushal Sarode</dc:creator>
      <pubDate>Mon, 13 Jul 2026 11:34:47 +0000</pubDate>
      <link>https://dev.to/khushalsarode/passion-uncorked-i-built-an-app-that-ages-your-passion-into-wine-or-forges-it-into-steel-7mk</link>
      <guid>https://dev.to/khushalsarode/passion-uncorked-i-built-an-app-that-ages-your-passion-into-wine-or-forges-it-into-steel-7mk</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Passion Uncorked&lt;/strong&gt; — you type a single word or a full sentence about whatever you're passionate about ("open source," "football," "cooking for people I love," anything), then choose to either &lt;strong&gt;age it in wine&lt;/strong&gt; 🍷 or &lt;strong&gt;forge it in fire&lt;/strong&gt; 🔥. Within about 30 seconds you get back a completely unique, narrated artifact for that exact passion: either a wine label (château name, vintage year, tasting notes, a collector's note) or a forge mark (forge name, smith's title, temper notes, a smith's mark) — read aloud in a voice built for that vessel.&lt;/p&gt;

&lt;p&gt;Same input, two entirely different pieces of writing, visual direction, and narration. The idea came straight from the challenge prompt: passion isn't one thing — it's devotion for one person and intensity for another, so the app treats those as two genuinely different creative outputs instead of one template with a palette swap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://passion-uncorked.khushalsarode-in.workers.dev" rel="noopener noreferrer"&gt;Passion Uncorked Demo Link&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F28zyodepo0kzoav0n3o2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F28zyodepo0kzoav0n3o2.gif" alt="Passion Uncorked demo" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Khushalsarode" rel="noopener noreferrer"&gt;
        Khushalsarode
      &lt;/a&gt; / &lt;a href="https://github.com/Khushalsarode/dev.to-challenge"&gt;
        dev.to-challenge
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      DEV Weekend Challenge: Passion Edition Submission
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🍷🔥 Passion Uncorked&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/0914104ad39a77e8398d1798737dfa1c36da8e5243aa8fbcc06af6be6c94fd1f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31382d3134396563613f6c6f676f3d7265616374266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/0914104ad39a77e8398d1798737dfa1c36da8e5243aa8fbcc06af6be6c94fd1f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31382d3134396563613f6c6f676f3d7265616374266c6f676f436f6c6f723d7768697465" alt="React 18"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3dc8a526ab94b68138a5358d9e82c553d95de0498f637f90176c8291feb7ed85/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974652d352d3634364346463f6c6f676f3d76697465266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/3dc8a526ab94b68138a5358d9e82c553d95de0498f637f90176c8291feb7ed85/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974652d352d3634364346463f6c6f676f3d76697465266c6f676f436f6c6f723d7768697465" alt="Vite 5"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d291cac6ac238192b52ac47486ab2b00269a207c2fb6c0dec4a3fd4e39b89eb7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476f6f676c6525323047656d696e692d322e352d3432383546343f6c6f676f3d676f6f676c6567656d696e69266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/d291cac6ac238192b52ac47486ab2b00269a207c2fb6c0dec4a3fd4e39b89eb7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476f6f676c6525323047656d696e692d322e352d3432383546343f6c6f676f3d676f6f676c6567656d696e69266c6f676f436f6c6f723d7768697465" alt="Google Gemini"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a4e262f5b9f88574d5e2a675a7903462104d1694fd4060a7c6a230fa79576007/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f456c6576656e4c6162732d566f69636525323041492d3030303030303f6c6f676f3d656c6576656e6c616273266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/a4e262f5b9f88574d5e2a675a7903462104d1694fd4060a7c6a230fa79576007/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f456c6576656e4c6162732d566f69636525323041492d3030303030303f6c6f676f3d656c6576656e6c616273266c6f676f436f6c6f723d7768697465" alt="ElevenLabs"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/713a805c75b98e44815fbe2d9432a0f138f78b8c1730591516fdf83a216df39c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4465706c6f7965642532306f6e2d436c6f7564666c6172652d4633383032303f6c6f676f3d636c6f7564666c617265266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/713a805c75b98e44815fbe2d9432a0f138f78b8c1730591516fdf83a216df39c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4465706c6f7965642532306f6e2d436c6f7564666c6172652d4633383032303f6c6f676f3d636c6f7564666c617265266c6f676f436f6c6f723d7768697465" alt="Deployed on Cloudflare"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2888d0bccf57175eeafc0d8054b8b34f0dd05a384aa1dd05f575cd8a5ed92fd1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4445562532305765656b656e642532304368616c6c656e67652d50617373696f6e25323045646974696f6e2d3342343944463f6c6f676f3d646576646f74746f266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/2888d0bccf57175eeafc0d8054b8b34f0dd05a384aa1dd05f575cd8a5ed92fd1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4445562532305765656b656e642532304368616c6c656e67652d50617373696f6e25323045646974696f6e2d3342343944463f6c6f676f3d646576646f74746f266c6f676f436f6c6f723d7768697465" alt="DEV Weekend Challenge: Passion Edition"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/Khushalsarode/dev.to-challenge/passion-uncorked.khushalsarode-in.workers.dev"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FKhushalsarode%2Fdev.to-challenge%2FHEAD%2F.%2Fpublic%2Fdemo.gif" alt="Passion Uncorked — type a passion, pick wine or fire, get a narrated label" width="920"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;Type any passion → age it in wine or forge it in fire → a one-of-a-kind, narrated artifact in under 30 seconds.&lt;/strong&gt;&lt;br&gt;
  &lt;a href="https://passion-uncorked.khushalsarode-in.workers.dev" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Live demo →&lt;/strong&gt;&lt;/a&gt; · Gemini-written copy · ElevenLabs narration · original browser-synthesized score
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why we built this&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;The &lt;strong&gt;DEV Weekend Challenge: Passion Edition&lt;/strong&gt; asked for something inspired by passion — the fire that drives obsession, devotion, and craft, in whatever form that takes.&lt;/p&gt;

&lt;p&gt;Everyone's passion looks different, but almost nobody gets to see theirs &lt;em&gt;presented&lt;/em&gt; as something precious. A sommelier ages a grape harvest into a vintage worth collecting. A blacksmith tempers raw ore into a blade worth naming. We asked: what if we did that to &lt;em&gt;your&lt;/em&gt; passion instead — whether it's "open source," "football," or "cooking for people I love"?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passion Uncorked&lt;/strong&gt; takes a single word or a full sentence and, in real time, turns it into one of two completely different artifacts:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;…&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Khushalsarode/dev.to-challenge"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;
  
  
  Video Explanation
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/CUfcfTuXDW4"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;React 18 + Vite, no backend — Gemini for copy, ElevenLabs for narration, the Web Audio API for an original ambient score, and &lt;code&gt;html2canvas&lt;/code&gt; for the downloadable PNG export. Deployed on Cloudflare Pages.&lt;/p&gt;

&lt;p&gt;Here's the stuff that actually took real thought (or real debugging) to get right:&lt;/p&gt;

&lt;p&gt;We didn't just let Gemini free-write and hope for the best. Every call goes out with &lt;code&gt;responseMimeType: 'application/json'&lt;/code&gt; against a strict schema per vessel, so we always get back a title, tasting or temper notes, a rarity or intensity line — and, this one mattered more than we expected, a separate &lt;code&gt;tts_script&lt;/code&gt; field. Turns out copy that reads well on a label doesn't always sound natural out loud, so we just had the model write both versions instead of reusing one.&lt;/p&gt;

&lt;p&gt;Gemini's flash models have this "thinking" budget quirk that cost us an evening early on: they'll quietly burn tokens on invisible reasoning by default, and if you don't set &lt;code&gt;thinkingConfig: { thinkingBudget: 0 }&lt;/code&gt; yourself, you can get back a response that looks totally successful and is completely empty. Fun one to debug. We also added a small JSON repair-and-retry step for the rare case where a response gets cut off mid-object.&lt;/p&gt;

&lt;p&gt;Wine and fire don't share a narrator, on purpose. Each vessel has its own ElevenLabs voice ID and its own &lt;code&gt;voiceSettings&lt;/code&gt; — stability and style tuned differently — pulled in through the official SDK. It only loads once someone actually hits submit.&lt;/p&gt;

&lt;p&gt;The bottle and the flame actually pay attention to what the AI wrote. The wine's liquid color comes straight from whatever &lt;code&gt;color_mood&lt;/code&gt; Gemini picked; the fire's flame height and glow scale off the &lt;code&gt;intensity&lt;/code&gt; line it generated, so a result described as "White-Hot" really does burn brighter on screen than one that's "Smoldering." It's all SVG and CSS — no image model involved, so it's instant and costs nothing.&lt;/p&gt;

&lt;p&gt;The ambient music isn't a loop we found somewhere — it's genuinely being composed in your browser while you're on the page, using the Web Audio API. Wine gets a soft arpeggio, fire gets a darker ostinato, both built live from oscillators and gain envelopes, no audio files anywhere.&lt;/p&gt;

&lt;p&gt;And the certificate itself got rebuilt from SVG to plain HTML/CSS partway through, mostly because long AI-generated titles kept overflowing the card and it looked broken. CSS container queries fixed that properly — the type now scales to the card's own width instead of us guessing at font sizes.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Google AI&lt;/strong&gt; — Gemini drives structured JSON generation, tone switching (a "classy" and a "sassy roast" mode), the color-mood system that tints the entire UI, and the narration script itself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of ElevenLabs&lt;/strong&gt; — every result is narrated through the official ElevenLabs SDK with distinct, deliberately-tuned voices per vessel, making narration a first-class output rather than a bolt-on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built by a team of two: &lt;a class="mentioned-user" href="https://dev.to/khushalsarode"&gt;@khushalsarode&lt;/a&gt; and &lt;a class="mentioned-user" href="https://dev.to/rajat_savdekar"&gt;@rajat_savdekar&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Thanks for reading — go pour or forge your own passion 🍷🔥&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Are you Facing ‘Docker Permission Denied’ error! Let’s fix it and get you started with your shipping! 😵😕🔍</title>
      <dc:creator>Khushal Sarode</dc:creator>
      <pubDate>Fri, 10 Jul 2026 20:55:30 +0000</pubDate>
      <link>https://dev.to/khushalsarode/are-you-facing-docker-permission-denied-error-lets-fix-it-and-get-you-started-with-your-36pd</link>
      <guid>https://dev.to/khushalsarode/are-you-facing-docker-permission-denied-error-lets-fix-it-and-get-you-started-with-your-36pd</guid>
      <description>&lt;h5&gt;
  
  
  Stop typing 'sudo' before every single Docker command. Learn how to instantly and securely fix the docker.sock permission denied error.
&lt;/h5&gt;

&lt;h1&gt;
  
  
  How to Fix the Docker Permission Denied Error (&lt;code&gt;docker.sock&lt;/code&gt;)
&lt;/h1&gt;

&lt;p&gt;Have you ever run a &lt;code&gt;docker ps&lt;/code&gt; or &lt;code&gt;docker build&lt;/code&gt; only to be met with this frustrating message?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a common issue when setting up a new Linux machine or cloud VM. Let’s explore why it happens and how to fix it for good.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Issue
&lt;/h2&gt;

&lt;p&gt;When you run Docker commands, your terminal shows a permission denied error. This forces you to add &lt;code&gt;sudo&lt;/code&gt; to every command, which disrupts automated scripts and becomes a hassle to type.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Happens
&lt;/h2&gt;

&lt;p&gt;Docker uses a Unix socket file located at &lt;code&gt;/var/run/docker.sock&lt;/code&gt; to connect the CLI tool you use with the background service that runs the containers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What exactly is &lt;code&gt;/var/run/docker.sock&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;/var/run/docker.sock&lt;/code&gt; file is a Unix domain socket that enables communication between the Docker CLI and the daemon. It typically needs root permissions.&lt;/p&gt;

&lt;p&gt;By default, &lt;strong&gt;root owns this socket file&lt;/strong&gt;. For security reasons, regular Linux user accounts are not allowed to access it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Two Ways to Fix It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The Proper Way (Recommended)
&lt;/h3&gt;

&lt;p&gt;This method gives your specific user account permanent and secure access by adding it to a specific security group.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Step 1:&lt;/strong&gt; Create the Docker system group (it usually exists, but just in case):
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;sudo &lt;/span&gt;groupadd docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Step 2:&lt;/strong&gt; Add your current user account to that group:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; docker &lt;span class="se"&gt;\$&lt;/span&gt;USER
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Step 3:&lt;/strong&gt; Activate the group changes right away without logging out:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  newgrp docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Test it by running &lt;code&gt;docker run hello-world&lt;/code&gt; without &lt;code&gt;sudo&lt;/code&gt;!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Quick Way
&lt;/h3&gt;

&lt;p&gt;If you are in a hurry, working on a temporary VM, and just need it to work &lt;em&gt;right now&lt;/em&gt;, you can take a shortcut.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Command:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;sudo chmod &lt;/span&gt;666 /var/run/docker.sock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Catch:&lt;/strong&gt; This permission change &lt;strong&gt;goes away when you reboot&lt;/strong&gt; the machine. Additionally, it lets &lt;em&gt;any&lt;/em&gt; user or process on that machine read and write to Docker, which is a significant security risk in production.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;quick way&lt;/strong&gt; is fine for a brief local test, but the &lt;strong&gt;proper way&lt;/strong&gt; is the best practice. It persists through reboots and keeps your environment safe. Take the extra 5 seconds to set up the user group— Enjoy 🐬📦🏗!&lt;br&gt;
Happy Learning!!😊👨‍💻📌&lt;/p&gt;

</description>
      <category>docker</category>
      <category>linux</category>
      <category>tutorial</category>
      <category>help</category>
    </item>
    <item>
      <title>Python Virtual Environment Setup: Commands, Structure, and Sample Program 🐍👩‍💻👨‍💻</title>
      <dc:creator>Khushal Sarode</dc:creator>
      <pubDate>Fri, 11 Jul 2025 23:17:27 +0000</pubDate>
      <link>https://dev.to/khushalsarode/python-virtual-environment-setup-commands-structure-and-sample-program-4g63</link>
      <guid>https://dev.to/khushalsarode/python-virtual-environment-setup-commands-structure-and-sample-program-4g63</guid>
      <description>&lt;p&gt;Whether you're building data pipelines, web apps, or experimenting with AI models, managing project dependencies is crucial. That’s where Python virtual environments come into play.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔍 What is a Python Virtual Environment?&lt;/li&gt;
&lt;li&gt;⚙️ Prerequisites&lt;/li&gt;
&lt;li&gt;
💻 Virtual Environment Setup by OS

&lt;ul&gt;
&lt;li&gt;🖥 Windows&lt;/li&gt;
&lt;li&gt;🍎 macOS / 🐧 Linux&lt;/li&gt;
&lt;li&gt;🧪 Verify the Environment&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;📁 Virtual Environment Directory Structure&lt;/li&gt;
&lt;li&gt;✅ Steps to Setup a Project&lt;/li&gt;
&lt;li&gt;🧾 Sample Program: main.py&lt;/li&gt;
&lt;li&gt;💡 Bonus Tips&lt;/li&gt;
&lt;li&gt;📌 Conclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔍 What is a Python Virtual Environment?
&lt;/h2&gt;

&lt;p&gt;A virtual environment is an isolated environment for Python projects. It allows you to manage dependencies separately for each project, preventing conflicts between libraries.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A virtual environment helps you keep each Python project separate on the same computer.

It lets you use specific versions of packages for each project without interfering with other projects or your system.

This logical separation makes it easy to manage multiple projects with different requirements at the same time.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ⚙️ Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ensure Python is installed:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;--version&lt;/span&gt;    &lt;span class="c"&gt;# or python3 --version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If not, &lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;download Python&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 Virtual Environment Setup by OS
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🖥 Windows
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Command Prompt or PowerShell&lt;/li&gt;
&lt;li&gt;Create a virtual environment
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv &lt;span class="nb"&gt;env&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Replace &lt;code&gt;env&lt;/code&gt; with your desired environment name.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔧 Creating a Python Virtual Environment with a Specific Version
&lt;/h3&gt;

&lt;p&gt;Setting up a virtual environment with a specific Python version ensures your project dependencies remain isolated and compatible. Below are different ways to create a Environment using the version you want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Using python3.x (Linux/macOS)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3.10 &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a virtual environment named venv using Python 3.10 (if installed).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Using py -3.x (Windows)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;py &lt;span class="nt"&gt;-3&lt;/span&gt;.10 &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the preferred way on Windows when managing multiple Python versions via the Python Launcher (py).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Activate the environment
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;.&lt;span class="se"&gt;\e&lt;/span&gt;nv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Command Prompt : &lt;code&gt;env\Scripts\activate.bat&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Powershell : &lt;code&gt;env\Scripts\Activate.ps1&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🍎 macOS / 🐧 Linux
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open Terminal&lt;/li&gt;
&lt;li&gt;Create the virtual environment
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 -m venv env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Activate the environment
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source env/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🧪 Verify the Environment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;which python&lt;/code&gt;     # Linux/macOS&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;where python&lt;/code&gt;     # Windows&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;You should see the path pointing to your local &lt;code&gt;env&lt;/code&gt; folder.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  📁 Virtual Environment Directory Structure
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;project-folder/
│
├── env/                     # Virtual environment directory
│   ├── bin/ or Scripts/     # Executables (python, pip)
│   ├── include/             # Header files
│   ├── lib/                 # Installed packages
│   └── pyvenv.cfg           # Config file
│
├── main.py                  # Your Python script
└── requirements.txt         # Project dependencies (optional)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🐾 Steps to Setup a Project
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a project folder
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir myproject &amp;amp;&amp;amp; cd myproject
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create the virtual environment
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python -m venv env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Activate it
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;### Windows
.\env\Scripts\activate

### macOS/Linux
source env/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install packages
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Freeze requirements
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip freeze &amp;gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Run your Python program
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you activate environment it will show as shown in image:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhucja913azg5vllanr9z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhucja913azg5vllanr9z.jpg" alt="Virtual Env Sample" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧾 Sample Program: main.py
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;getpost&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="c1"&gt;# Make a GET request to a public API
&lt;/span&gt;    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://jsonplaceholder.typicode.com/posts/1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Print the response content Json
&lt;/span&gt;    &lt;span class="c1"&gt;#print(response.json())
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Request was successful!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User ID{user_id} Title: {title} Body: {body}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;userId&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;body&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Request failed with status code:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# Check the status code
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Status Code: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;getpost&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  💡 Bonus Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To deactivate the environment:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deactivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To delete the virtual environment:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rm -rf env     # macOS/Linux
rmdir /s env   # Windows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Use requirements.txt to share dependencies with teammates:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Using a virtual environment keeps your Python projects clean and manageable. It’s an essential skill for every developer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One does not simply pip install without a virtual environment&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🚀 Fixing Tailwind Init Error in React (Vite) Projects</title>
      <dc:creator>Khushal Sarode</dc:creator>
      <pubDate>Mon, 26 May 2025 19:04:29 +0000</pubDate>
      <link>https://dev.to/khushalsarode/fixing-tailwind-init-error-in-react-vite-projects-3ca7</link>
      <guid>https://dev.to/khushalsarode/fixing-tailwind-init-error-in-react-vite-projects-3ca7</guid>
      <description>&lt;p&gt;Integrating Tailwind CSS with a React + Vite project is usually smooth — but if you’ve run into an error during the &lt;code&gt;tailwindcss&lt;/code&gt; init process, don’t worry. This guide walks you through the right way to set up Tailwind, what causes the init error, and how to fix it quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Step 1: Create a React + Vite Project
&lt;/h2&gt;

&lt;p&gt;First, set up your React app using Vite:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm create vite@latest &amp;lt;project_name&amp;gt; --template react
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Prompts to follow:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project name:&lt;/strong&gt; &lt;code&gt;project_name&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; React&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Variant:&lt;/strong&gt; JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, navigate into your project and install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd tech-stack-suggestor
npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ✅ Step 2: Install Tailwind CSS
&lt;/h2&gt;

&lt;p&gt;Here’s where many developers hit the error. The standard command is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -D tailwindcss postcss autoprefixer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2fh62mn12ehgunzoqg1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2fh62mn12ehgunzoqg1.jpg" alt="Installed Tailwind postcss autoprefixer" width="800" height="219"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, you may see an error during &lt;code&gt;tailwindcss init&lt;/code&gt;, especially if the Tailwind CLI version is mismatched or if PostCSS isn’t configured properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  ❌ The Problem: Tailwind Init Error
&lt;/h2&gt;

&lt;p&gt;In some cases, running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx tailwindcss init -p
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Results in an error like:&lt;br&gt;
Fails silently without generating the &lt;code&gt;tailwind.config.js&lt;/code&gt; and &lt;code&gt;postcss.config.js&lt;/code&gt; files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjkqd8kr6nfg9hezcgej.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjkqd8kr6nfg9hezcgej.jpg" alt="Error while Init the tailwind config files" width="800" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm ERR! could not determine executable to run
npm ERR! A complete log of this run can be found in: C:\Users\HP.KHUSHALSARODE.000\AppData\Local\npm-cache\_logs\2025-05-26T16_52_47_671Z-debug-0.log

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💡 Cause:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The init command is no longer available in Tailwind CSS v4. For v3, 
make sure to use the correct version qualifier during installation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ✅ The Fix: Specify Tailwind Version Explicitly
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -D tailwindcss@3.4.1 postcss autoprefixer
npx tailwindcss init -p
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will correctly generate the &lt;code&gt;tailwind.config.js&lt;/code&gt; and &lt;code&gt;postcss.config.js&lt;/code&gt; files, resolving the init error.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28rlqy032n71ah6soflx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28rlqy032n71ah6soflx.jpg" alt="Config files generated successfully" width="678" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Step 3: Configure Tailwind
&lt;/h2&gt;

&lt;p&gt;Update &lt;code&gt;tailwind.config.js&lt;/code&gt; like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/** @type {import('tailwindcss').Config} */
export default {
  content: [
    "./index.html",
    "./src/**/*.{js,ts,jsx,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, update &lt;code&gt;./src/index.css&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@tailwind base;
@tailwind components;
@tailwind utilities;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure this CSS file is imported in your &lt;code&gt;main.jsx&lt;/code&gt; or &lt;code&gt;main.tsx&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import './index.css';

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ✅ Step 4: Run Your App
&lt;/h2&gt;

&lt;p&gt;Now start the development server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your Tailwind-powered React app should be live at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost:5173

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>react</category>
      <category>tailwindcss</category>
      <category>help</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Easily Manage Node.js Versions with NVM — Complete Setup + Tips (macOS, Linux, Windows)</title>
      <dc:creator>Khushal Sarode</dc:creator>
      <pubDate>Sat, 19 Apr 2025 21:06:47 +0000</pubDate>
      <link>https://dev.to/khushalsarode/easily-manage-nodejs-versions-with-nvm-complete-setup-tips-macos-linux-windows-17m6</link>
      <guid>https://dev.to/khushalsarode/easily-manage-nodejs-versions-with-nvm-complete-setup-tips-macos-linux-windows-17m6</guid>
      <description>&lt;h2&gt;
  
  
  ⚡ Manage Node.js Versions Easily with NVM
&lt;/h2&gt;

&lt;p&gt;Need to switch between different Node.js versions for different projects? &lt;strong&gt;NVM (Node Version Manager)&lt;/strong&gt; makes it quick and painless. With just a few commands, you can install, switch, and manage multiple Node versions on your system.&lt;/p&gt;

&lt;p&gt;Let’s get right to it — installation, usage, and some handy tips. &lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 What is NVM?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;NVM&lt;/strong&gt; is a CLI tool to manage multiple Node.js versions — perfect for switching between projects or testing on different versions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ NVM supports:&lt;br&gt;
&lt;strong&gt;Windows&lt;/strong&gt;, &lt;strong&gt;Linux&lt;/strong&gt;, &lt;strong&gt;macOS&lt;/strong&gt;, &lt;strong&gt;WSL&lt;/strong&gt;, &lt;strong&gt;Cygwin&lt;/strong&gt;, and &lt;strong&gt;MSYS&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  📦 Installation/Setup
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠  Always restart your terminal after installation or configuration changes&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  On macOS/Linux:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Install NVM using &lt;code&gt;curl&lt;/code&gt; or &lt;code&gt;wget&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-o-&lt;/span&gt; https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget &lt;span class="nt"&gt;-qO-&lt;/span&gt; https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add to your shell config (if not auto-added):&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;NVM_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;XDG_CONFIG_HOME&lt;/span&gt;&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;printf&lt;/span&gt; %s &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/.nvm"&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;printf&lt;/span&gt; %s &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;XDG_CONFIG_HOME&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/nvm"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$NVM_DIR&lt;/span&gt;&lt;span class="s2"&gt;/nvm.sh"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\.&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$NVM_DIR&lt;/span&gt;&lt;span class="s2"&gt;/nvm.sh"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Then reload your shell:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc  &lt;span class="c"&gt;# or ~/.zshrc, depending on your shell&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To verify installation:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bt88urox4wkj6l23kh9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bt88urox4wkj6l23kh9.jpg" alt="nvm version" width="637" height="160"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  On Windows:
&lt;/h2&gt;

&lt;p&gt;NVM-Windows (Recommended)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/coreybutler/nvm-windows" rel="noopener noreferrer"&gt;https://github.com/coreybutler/nvm-windows&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⬇️ [ &lt;a href="https://github.com/coreybutler/nvm-windows/releases" rel="noopener noreferrer"&gt;Download nvm for windows&lt;/a&gt; ]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the &lt;code&gt;.exe&lt;/code&gt; installer.&lt;/li&gt;
&lt;li&gt;Run it and follow the setup steps.&lt;/li&gt;
&lt;li&gt;Open a new terminal and check:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it! You're ready to manage Node.js versions on Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Version Available for Node.js Version Managers for Windows
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nodists/nodist" rel="noopener noreferrer"&gt;&lt;strong&gt;nodist&lt;/strong&gt;&lt;/a&gt; – Manages Node and npm versions.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jasongin/nvs" rel="noopener noreferrer"&gt;&lt;strong&gt;nvs&lt;/strong&gt;&lt;/a&gt; – Cross-platform manager with auto-switch and profiles.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Using NVM to Manage Node.js
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Check nvm version&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install a Specific Node.js Version&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;node&lt;/span&gt; &lt;span class="nx"&gt;specific&lt;/span&gt; &lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nx"&gt;or&lt;/span&gt; 
&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;lts&lt;/span&gt;
            &lt;span class="nx"&gt;or&lt;/span&gt; 
&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;node&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;List Installed Versions&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt; &lt;span class="nx"&gt;or&lt;/span&gt; &lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;ls&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;remote&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Switch Between Node Versions&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm use 16
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fif4ebg6iwtylj8to0zu6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fif4ebg6iwtylj8to0zu6.jpg" alt="list available version" width="694" height="169"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set a default version globally:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nb"&gt;Set&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="nx"&gt;globally&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update Node to the Latest Version&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;node&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;reinstall&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;packages&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;
&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;alias&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;node&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Show the currently active Node.js version&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;current&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhda089cnzs2hlp519kof.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhda089cnzs2hlp519kof.jpg" alt="current version" width="613" height="106"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run a file using a specific Node.js version&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;run&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;file&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nt"&gt;js&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
usage: nvm run 14 app.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Execute a command using a specific Node.js version&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;exec&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;command&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
usage: nvm exec 16 npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Show the path to the Node.js binary for a version&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;which&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;which&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Uninstall a Version&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nvm uninstall 14.21.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚙️ Using Into project directory
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If need to switch version for project using node: &lt;br&gt;
Use a &lt;code&gt;.nvmrc&lt;/code&gt; file in your project directory to specify which Node version it requires:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;echo&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;18.17.1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nvmrc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;nvm&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Based on &lt;code&gt;.nvmrc&lt;/code&gt; config file you want to change version runtime need to use node version switch with tool like &lt;a href="https://github.com/wbyoung/avn" rel="noopener noreferrer"&gt;https://github.com/wbyoung/avn&lt;/a&gt; [auto version switching] &lt;/p&gt;

&lt;p&gt;To install &lt;code&gt;avn&lt;/code&gt; and its plugin for &lt;code&gt;nvm&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -g avn avn-nvm avn-n
avn setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Let’s focus on writing code — version conflicts? NVM’s got it covered! 😉&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
