Skip to main content

NPM Basics

NPM = Node Package Manager for JavaScript


What is NPM?

"Package manager + registry"

NPM (Node Package Manager) is:

  • Package manager for JavaScript
  • Registry of open-source packages
  • Command-line tool
  • Part of Node.js ecosystem

"NPM is the package manager for JavaScript that manages dependencies and provides access to a vast registry of open-source packages."


Core Concepts

package.json = manifest, node_modules = packages

  • package.json: Project manifest with dependencies
  • node_modules: Installed packages folder
  • npm registry: Public package repository
  • Semantic versioning: Version numbering (major.minor.patch)

"NPM uses package.json to define dependencies and installs packages into node_modules."


Common Commands

install · init · run · publish

CommandPurpose
npm installInstall dependencies
npm initCreate package.json
npm install <package>Install package
npm run <script>Run npm script
npm publishPublish package
npm updateUpdate packages

package.json

Project configuration file

{
"name": "my-app",
"version": "1.0.0",
"scripts": {
"start": "node index.js",
"test": "jest"
},
"dependencies": {
"react": "^18.0.0"
},
"devDependencies": {
"jest": "^29.0.0"
}
}

"package.json defines project metadata, scripts, and dependencies (production and development)."


Dependencies vs DevDependencies

dependencies = production, devDependencies = development

  • dependencies: Needed in production
  • devDependencies: Only needed during development
  • npm install --save-dev for dev dependencies

"Dependencies are required in production, while devDependencies are only needed during development."


Version Ranges

^ = compatible, ~ = patch, exact = specific

  • ^18.0.0: Compatible versions (18.x.x)
  • ~18.0.0: Patch versions (18.0.x)
  • 18.0.0: Exact version
  • *: Latest version

"Version ranges control which package versions can be installed, with ^ allowing compatible updates."


npm scripts

Custom commands in package.json

{
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "jest"
}
}

Run with: npm run <script>

"npm scripts define custom commands that can be run with npm run, automating common tasks."


package-lock.json

Locks exact versions

  • Records exact versions installed
  • Ensures consistent installs
  • Should be committed to version control
  • Generated automatically

"package-lock.json locks exact dependency versions to ensure consistent installations across environments."


9️⃣ npm vs yarn vs pnpm

Different package managers, similar goals

ManagerSpeedFeatures
npmStandardBuilt into Node.js
yarnFasterBetter caching
pnpmFastestDisk efficient

"Yarn and pnpm are alternative package managers with improved performance and features compared to npm."


Best Practices

✅ Commit package-lock.json ✅ Use exact versions for critical packages ✅ Regular security audits (npm audit) ✅ Keep dependencies updated ✅ Use .npmrc for configuration ❌ Don't commit node_modules


"NPM is the package manager for JavaScript that manages project dependencies. It uses package.json to define dependencies and scripts, installs packages to node_modules, and supports semantic versioning. package-lock.json ensures consistent installs, and npm scripts automate common tasks. Alternatives like Yarn and pnpm offer improved performance."


🧠 Ultra-Short Cheat Sheet

Package manager for JS
package.json = manifest
node_modules = packages
npm install
npm run scripts
dependencies vs devDependencies
Version ranges (^, ~)
package-lock.json