← Back to React Course | Chapter 1: Environment Setup & Tooling | Lesson 3 of 10

npm vs yarn vs pnpm में अंतर

npm, yarn, और pnpm तीन अलग delivery trucks हैं जो सभी आपके project में वही packages लाते हैं, बस अलग speeds और habits के साथ।

एक Package Manager क्या करता है

npm, yarn, और pnpm सभी एक ही core job करते हैं: dependencies की एक list पढ़ना और सही package versions को आपके project में download करना। वे मुख्य रूप से speed, disk usage, और lockfile format में अलग हैं।

Note: सीखने के लिए तीनों में से कोई भी ठीक काम करता है -- npm Node.js के साथ bundled आता है इसलिए इसे extra install की ज़रूरत नहीं।
Warning: एक ही project में अलग-अलग package managers से lockfiles mix करना (package-lock.json के साथ yarn.lock) inconsistent installs का कारण बन सकता है।

उदाहरण: What a Package Manager Does

bash
npm install react
yarn add react
pnpm add react
# all three fetch the same package from the npm registry

⚠️ Run this in your own terminal or Node.js environment.

Key Command Differences

रोज़ाना के commands tools के across closely map होते हैं: एक package install करना npm install pkg, yarn add pkg, या pnpm add pkg है; एक script run करना npm run dev, yarn dev, या pnpm dev है।

Note: एक project में एक ही package manager से चिपके रहें ताकि teammates mismatched lockfiles के साथ न फंसें।
Warning: yarn dev (बिना run के) काम करता है क्योंकि yarn script names के लिए run छोड़ने देता है -- npm में वही shortcut type करना हमेशा वैसे काम नहीं करता।

उदाहरण: Key Command Differences

bash
Task          npm            yarn        pnpm
Install all   npm install    yarn        pnpm install
Add package   npm install x  yarn add x  pnpm add x
Run a script  npm run dev    yarn dev    pnpm dev

⚠️ Run this in your own terminal or Node.js environment.

pnpm Disk Space क्यों बचाता है

pnpm हर package version की एक copy disk पर store करता है और इसे हर project में link करता है जिसे इसकी ज़रूरत है, हर project के लिए node_modules को duplicate करने के बजाय जैसे npm और yarn classically करते हैं। यह कई projects के across significant disk space बचा सकता है।

Note: एक बार जब आप npm के साथ comfortable हो जाएं और कई projects पर एक साथ काम कर रहे हों तो pnpm try करने लायक है।
Warning: कुछ older tooling npm के flat node_modules layout को मान लेती है और pnpm की stricter linking के under misbehave कर सकती है -- अगर आपको strange errors आएं तो compatibility check करें।

उदाहरण: Why pnpm Saves Disk Space

markup
<!DOCTYPE html>
<html>
<head>
  <script src="https://unpkg.com/react@18/umd/react.development.js"></script>
  <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
  <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
</head>
<body>
  <div id="root"></div>
  <script type="text/babel">
function DiskSpaceDemo() {
  return (
    <div>
      <p style={{background: '#e57373', width: '260px', padding: '8px', color: '#fff'}}>
        npm/yarn: full copy of react in every project
      </p>
      <p style={{background: '#81c784', width: '90px', padding: '8px', color: '#fff'}}>
        pnpm: linked
      </p>
    </div>
  );
}
ReactDOM.createRoot(document.getElementById('root')).render(<DiskSpaceDemo />);
  </script>
</body>
</html>
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. एक ही project में अलग-अलग package managers से lock files mix करना (जैसे दोनों package-lock.json और yarn.lock)।
  2. यह मान लेना कि तीनों package managers dependencies को identically install करते हैं -- उनकी resolution strategies अलग हो सकती हैं।
  3. Lock file commit न करना, जो machines के across inconsistent installs का कारण बनता है।
चैप्टर सारांश
  • npm Node.js के साथ ship होता है और ज़्यादातर projects के लिए default choice है।
  • yarn faster installs offer करता है और npm का एक early alternative था।
  • pnpm symlinks के ज़रिए projects के across packages share करके disk space बचाता है।
  • एक project में एक package manager चुनें और consistently इसके साथ रहें।
ब्राउज़र सपोर्ट

Applicable नहीं -- package managers development-time tools हैं।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.