npm: основе, менаџер пакета за React Native и Node.js

Аутор: IT Sectr Објављено: 2026-02-13 Време читања: 10 мин

npm (Node Package Manager) — стандардни менаџер пакета за платформу Node.js, који долази уз инсталацију Node.js. npm управља зависностима JavaScript и TypeScript пројеката: инсталира библиотеке у node_modules, ажурира верзије пакета, решава конфликте верзија. package.json — централни конфигурациони фајл са метаподацима и списком зависности. npm Registry — највећи регистар пакета. Више на npm Registry.

Главно

  • npm — стандардни менаџер пакета Node.js, укључен у Node.js од верзије 0.6.3
  • package.json — конфигурациони фајл пројекта са зависностима, скриптама и метаподацима
  • npm install — основна команда за инсталацију зависности из package.json у node_modules фасциклу
  • package-lock.json — фајл за фиксирање тачних верзија за поновљиве инсталације на свим окружењима
  • npm ci — команда за CI/CD која инсталира пакете строго према lock фајлу без његовог ажурирања

Шта је npm — менаџер пакета Node.js?

npm је 2010. године створио Isaac Schlueter као решење за управљање зависностима Node.js. Од 2014. године npm води компанија npm, Inc., коју су Microsoft/GitHub купили 2020. Алат се састоји из два дела: CLI (командна линија) за инсталацију и управљање пакетима, и Registry — централног репозиторијума свих објављених модула на адреси registry.npmjs.org.

npm Registry — највећи регистар пакета: преко 2 милиона пакета и преко 10 милијарди преузимања месечно. Сваки пакет има SemVer верзију, опис, зависности, лиценцу и ауторство. Објављивање сопственог пакета врши се преко npm publish. npm подржава scoped пакете за организације (@scope/package), приватне регистре и уграђени сигурносни преглед.

Node.js верзије 18+ укључује npm 9+ са побољшаним перформансама, workspaces за монорепозиторијуме и прерађеним механизмом peer dependencies. npm екосистем обухвата серверски JavaScript, фронтенд (React, Vue, Angular), мобилни развој (React Native), алате за изградњу (Webpack, Vite) и CLI алате. npm је главни канал дистрибуције JavaScript библиотека.

Основне могућности npm

npm install — главна команда која чита package.json и package-lock.json за инсталацију свих зависности у node_modules. При првом покретању npm израчунава граф зависности, решава конфликте верзија и генерише package-lock.json. Команда npm install <package> инсталира одређени пакет; застава --save-dev додаје у devDependencies, --global — глобално.

npx — извршилац пакета, укључен у npm од верзије 5.2. npx омогућава покретање CLI алата без глобалне инсталације: npx react-native init или npx create-react-app my-app. npx преузима пакет у привремени кеш и покреће га, а након завршетка га чисти. npx је такође користан за покретање одређених верзија алата.

npm audit скенира стабло зависности за познате рањивости из базе npm. Команда приказује извештај са нивоима критичности (critical, high, moderate) и препоручује npm audit fix за аутоматско ажурирање рањивих пакета. npm cache чува преузете пакете локално. npm cache clean --force чисти кеш при проблемима са инсталацијом. npm outdated приказује застареле пакете.

bash
# Главне npm команде
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Покретање без глобалне инсталације
$ npx react-native init MyApp
# Сигурносни преглед
$ npm audit --fix

Структура package.json и управљање зависностима

package.json — JSON фајл у корену пројекта који описује његове метаподатке, зависности и конфигурацију. Обавезна поља: name (јединствено име пакета) и version (SemVer верзија, нпр. 1.0.0). Фајл се креира командом npm init -y за брзу иницијализацију или ручно.

Semantic Versioning (SemVer) — стандард верзионисања MAJOR.MINOR.PATCH. Главна верзија се мења при некомпатибилним променама API-ја, мања — при додавању функционалности (уназад компатибилно), закрпа — при исправљању грешака. Симбол ^ испред верзије дозвољава ажурирање мање верзије и закрпе, ~ — само закрпе.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios"
  },
  "dependencies": {
    "react": "^18.3.0",
    "react-native": "^0.76.0"
  },
  "devDependencies": {
    "typescript": "^5.5.0",
    "@types/react": "^18.3.0"
  }
}
ПољеНаменаПример вредности
scriptsКоманде покретања за npm run"start": "node index.js"
dependenciesProduction зависности апликације"react": "^18.3.0"
devDependenciesАлати за развој и тестирање"jest": "^29.7.0"
peerDependenciesХост зависности за библиотеке"react": ">=17.0.0"
enginesЗахтеви за верзијом Node.js{"node": ">=18.0.0"}

npm у развоју React Native

React Native пројекти активно користе npm за управљање зависностима. Стандардни сет укључује react, react-native, библиотеке за навигацију (React Navigation), HTTP захтеве (axios), управљање стањем (Redux, Zustand) и UI компоненте. npm омогућава инсталацију хиљада компатибилних пакета из регистра.

npx pod-install — обавезна команда након инсталације изворних модула у React Native за iOS. npm аутоматски генерише Podfile.lock на основу package-lock.json. У Expo пројектима користи се expo install уместо npm install, јер бира верзије компатибилне са тренутном верзијом Expo SDK.

Конфликти верзија — чест проблем у React Native: react-native-reanimated, react-native-gesture-handler и react-native-safe-area-context захтевају усклађене верзије. Решење — ажурирати све пакете на најновије компатибилне верзије или користити --legacy-peer-deps. package-lock.json је кључан за изворне модуле који се компајлирају преко CocoaPods и Gradle.

Поређење npm са алтернативним менаџерима

npm — стандардни менаџер пакета, укључен у Node.js. Главне алтернативе: yarn (направио Facebook 2016) и pnpm (брз, са чврстим линковима). Од npm 5, разлика у брзини и функционалности између npm и yarn је минимална. npm 7+ је додао workspaces, што га чини конкурентним за монорепозиторијуме.

Карактеристикаnpmyarnpnpm
Година настанка201020162017
Lock фајлpackage-lock.jsonyarn.lockpnpm-lock.yaml
ИнсталацијаСеквенцијална (npm 5+)ПаралелнаПаралелна
Диск просторСтандарданСтандарданМинималан (линкови)
WorkspacesДа (npm 7+)ДаДа
Plug'n'PlayНеДаНе

Према подацима State of JS 2025: npm користи 62% програмера, yarn — 35% (углавном стари пројекти и љубитељи PnP), pnpm — 3%. За React Native пројекте оба алата су равноправна, али npm се чешће среће у пројектима на Expo SDK 50+ и новим React Native иницијализацијама.

yarn задржава предност у екстремно великим монорепозиторијумима (100+ пакета) захваљујући зрелијој имплементацији workspaces и Plug'n'Play. pnpm побеђује у уштеди дисковног простора захваљујући чврстим линковима на глобално складиште. Избор менаџера зависи од тимских преференција и инфраструктуре.

Често постављана питања

Чиме се разликује npm install од npm ci?

npm install ажурира package-lock.json и може инсталирати нове мање верзије у оквиру семантичког опсега. npm ci (Clean Install) брише node_modules и инсталира пакете строго према package-lock.json без његовог ажурирања. npm ci је бржи, користи се у CI/CD и гарантује идентично окружење на свим машинама. Ако package-lock.json недостаје, npm ci враћа грешку.

Како поправити конфликте peer dependencies у npm?

Од npm 7, конфликти peer dependencies изазивају грешку при изградњи. Решења: ажурирати све пакете на компатибилне верзије кроз npm update, користити заставу --legacy-peer-deps за режим npm 6, или додати секцију overrides у package.json за принудно фиксирање верзије одређеног пакета. Најбоља опција — ажурирати зависности на компатибилне верзије.

Шта је npm audit и зашто је потребан?

npm audit скенира стабло зависности за познате рањивости из базе npm Security Advisory. Команда приказује извештај са нивоом критичности (critical, high, moderate, low) и препоручује npm audit fix за аутоматско ажурирање рањивих пакета на безбедне верзије. Редовно покретање npm audit — основна сигурносна пракса у JavaScript пројектима.

Како npm workspaces поједностављују монорепозиторијуме?

npm workspaces омогућавају управљање са више пакета у једном репозиторијуму. Додајте поље "workspaces": ["packages/*"] у коренски package.json. Предности: јединствена инсталација свих зависности у заједнички node_modules, аутоматски симболички линкови између локалних пакета, покретање скрипти за све пакете из корена, елиминација дуплирања верзија.

Зашто комитовати package-lock.json у репозиторијум?

package-lock.json фиксира тачне верзије свих зависности и њихових транзитивних пакета. Без њега различити програмери и CI сервери могу добити различите верзије библиотека у оквиру семантичког опсега, што доводи до грешака „на мом рачунару ради“. Комитовање lock фајла гарантује поновљиве изградње и идентично понашање на свим окружењима.

Резиме

  • npm — стандардни менаџер пакета Node.js, укључен у Node.js од верзије 0.6.3
  • package.json — конфигурациони фајл пројекта са зависностима, скриптама и метаподацима
  • npm install — инсталација зависности, npm ci — фиксирање према package-lock.json за CI/CD
  • package-lock.json — фиксирање тачних верзија, обавезно за поновљиве изградње
  • npm Registry — највећи регистар пакета са преко 2 милиона модула
  • npm audit — провера безбедности зависности са аутоматским исправљањем рањивости
  • npm workspaces — механизам за управљање монорепозиторијумима са заједничким node_modules

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође