npm: mga batayan, tagapamahala ng pakete para sa React Native at Node.js

May-akda: IT Sectr Nai-publish: 2026-02-13 Oras ng pagbabasa: 10 min

npm (Node Package Manager) — ang karaniwang tagapamahala ng pakete para sa Node.js platform, kasama sa pag-install ng Node.js. Namamahala ang npm ng mga dependency ng JavaScript at TypeScript na proyekto: nag-i-install ng mga library sa node_modules, nag-a-update ng mga bersyon ng pakete, lumulutas ng mga conflict sa bersyon. package.json — ang sentral na file ng configuration na may metadata at listahan ng mga dependency. npm Registry — ang pinakamalaking rehistro ng pakete. Higit pa sa npm Registry.

Mga Pangunahing Punto

  • npm — ang karaniwang tagapamahala ng pakete ng Node.js, kasama sa pag-install ng Node.js mula bersyon 0.6.3
  • package.json — ang file ng configuration ng proyekto na may mga dependency, script, at metadata
  • npm install — ang pangunahing utos para i-install ang mga dependency mula package.json papunta sa node_modules folder
  • package-lock.json — file para sa pag-aayos ng eksaktong bersyon para sa reproducible na pag-install sa lahat ng kapaligiran
  • npm ci — utos para sa CI/CD na nag-i-install ng mga pakete nang mahigpit ayon sa lock-file nang hindi ito ina-update

Ano ang npm — tagapamahala ng pakete ng Node.js?

npm ay nilikha noong 2010 ni Isaac Schlueter bilang solusyon para sa pamamahala ng dependency ng Node.js. Mula 2014, ang npm ay pinamamahalaan ng npm, Inc., na nakuha ng Microsoft/GitHub noong 2020. Ang tool ay binubuo ng dalawang bahagi: CLI (command line) para sa pag-install at pamamahala ng mga pakete, at Registry — ang sentral na repositoryo ng lahat ng nai-publish na module sa registry.npmjs.org.

npm Registry — ang pinakamalaking rehistro ng pakete: mahigit 2 milyon na pakete at mahigit 10 bilyong pag-download buwan-buwan. Bawat pakete ay may bersyon ng SemVer, paglalarawan, mga dependency, lisensya, at pagmamay-ari. Ang pag-publish ng sariling pakete ay ginagawa sa pamamagitan ng npm publish. Sinusuportahan ng npm ang mga scoped na pakete para sa mga organisasyon (@scope/package), pribadong rehistro, at built-in na audit ng seguridad.

Node.js bersyon 18+ ay may kasamang npm 9+ na may pinabuting performance, workspaces para sa monorepo, at binagong mekanismo ng peer dependencies. Ang npm ecosystem ay sumasaklaw sa server-side JavaScript, frontend (React, Vue, Angular), mobile development (React Native), mga tool sa build (Webpack, Vite), at mga utility ng CLI. Ang npm ay ang pangunahing channel ng pamamahagi para sa mga JavaScript library.

Mga pangunahing kakayahan ng npm

npm install — ang pangunahing utos na nagbabasa ng package.json at package-lock.json para i-install ang lahat ng dependency sa node_modules. Sa unang pagtakbo, kinakalkula ng npm ang graph ng dependency, lumulutas ng mga conflict sa bersyon, at gumagawa ng package-lock.json. Ang utos na npm install <package> ay nag-i-install ng partikular na pakete; ang flag na --save-dev ay nagdaragdag sa devDependencies, --global — globally.

npx — tagapagpatupad ng pakete, kasama sa npm mula bersyon 5.2. Pinapayagan ng npx ang pagpapatakbo ng mga CLI utility nang walang global na pag-install: npx react-native init o npx create-react-app my-app. Nagda-download ang npx ng pakete sa pansamantalang cache, pinapatakbo ito, at nililinis pagkatapos. Ang npx ay kapaki-pakinabang din para sa pagpapatakbo ng mga partikular na bersyon ng mga tool.

npm audit ay nag-scan ng dependency tree para sa mga kilalang kahinaan mula sa npm database. Ang utos ay nagpapakita ng ulat na may mga antas ng kritikal (critical, high, moderate) at nagrerekomenda ng npm audit fix para sa awtomatikong pag-update ng mga vulnerable na pakete. npm cache ay nag-iimbak ng mga na-download na pakete nang lokal. npm cache clean --force ay naglilinis ng cache kapag may problema sa pag-install. npm outdated ay nagpapakita ng mga lumang pakete.

bash
# Mga pangunahing utos ng npm
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Pagpapatakbo nang walang global na pag-install
$ npx react-native init MyApp
# Audit ng seguridad
$ npm audit --fix

Istraktura ng package.json at pamamahala ng dependency

package.json — ay isang JSON file sa root ng proyekto na naglalarawan ng metadata, mga dependency, at configuration nito. Mga mandatoryong field: name (natatanging pangalan ng pakete) at version (bersyon ng SemVer, hal. 1.0.0). Ang file ay nilikha gamit ang utos na npm init -y para sa mabilis na pagsisimula o mano-mano.

Semantic Versioning (SemVer) — pamantayan ng pag-version ng MAJOR.MINOR.PATCH. Ang pangunahing bersyon ay nagbabago sa hindi tugmang pagbabago ng API, minor — sa pagdaragdag ng functionality (backward compatible), patch — sa pag-aayos ng bug. Ang simbolo ^ bago ang bersyon ay nagpapahintulot ng pag-update ng minor at patch na bersyon, ~ — patch lang.

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"
  }
}
FieldLayuninHalimbawa
scriptsMga utos para sa npm run"start": "node index.js"
dependenciesMga dependency sa produksyon ng app"react": "^18.3.0"
devDependenciesMga tool sa pag-develop at pag-test"jest": "^29.7.0"
peerDependenciesMga host dependency para sa library"react": ">=17.0.0"
enginesMga kinakailangan sa bersyon ng Node.js{"node": ">=18.0.0"}

npm sa pag-develop ng React Native

React Native proyekto ay aktibong gumagamit ng npm para sa pamamahala ng dependency. Ang karaniwang set ay may kasamang react, react-native, mga library ng navigation (React Navigation), HTTP requests (axios), state management (Redux, Zustand), at mga UI component. Pinapayagan ng npm ang pag-install ng libu-libong tugmang pakete mula sa rehistro.

npx pod-install — mandatoryong utos pagkatapos mag-install ng native modules sa React Native para sa iOS. Awtomatikong gumagawa ang npm ng Podfile.lock batay sa package-lock.json. Sa Expo projects, ginagamit ang expo install sa halip na npm install, dahil pumipili ito ng mga bersyong tugma sa kasalukuyang bersyon ng Expo SDK.

Conflict ng bersyon — karaniwang problema sa React Native: ang react-native-reanimated, react-native-gesture-handler, at react-native-safe-area-context ay nangangailangan ng magkakatugmang bersyon. Solusyon — i-update ang lahat ng pakete sa pinakabagong tugmang bersyon o gamitin ang --legacy-peer-deps. Mahalaga ang package-lock.json para sa native modules na compile sa pamamagitan ng CocoaPods at Gradle.

Paghahambing ng npm sa mga alternatibong tagapamahala

npm — ang karaniwang tagapamahala ng pakete, kasama sa Node.js. Mga pangunahing alternatibo: yarn (ginawa ng Facebook noong 2016) at pnpm (mabilis, may hard links). Mula npm 5, ang pagkakaiba sa bilis at functionality sa pagitan ng npm at yarn ay minimal. Nagdagdag ang npm 7+ ng workspaces, na ginagawa itong kompetitibo para sa monorepo.

Katangiannpmyarnpnpm
Taon ng pagkakalikha201020162017
Lock-filepackage-lock.jsonyarn.lockpnpm-lock.yaml
Pag-installSunod-sunod (npm 5+)ParallelParallel
Espasyo sa diskKaraniwanKaraniwanMinimal (links)
WorkspacesOo (npm 7+)OoOo
Plug'n'PlayHindiOoHindi

Ayon sa State of JS 2025: npm ay ginagamit ng 62% ng mga developer, yarn — 35% (pangunahing mga lumang proyekto at tagahanga ng PnP), pnpm — 3%. Para sa React Native projects, pareho ang dalawang tool, ngunit ang npm ay mas madalas sa mga proyekto sa Expo SDK 50+ at bagong React Native initialization.

yarn ay nagpapanatili ng kalamangan sa napakalaking monorepo (100+ pakete) dahil sa mas mature na implementasyon ng workspaces at Plug'n'Play. Ang pnpm ay nananalo sa pagtitipid ng espasyo sa disk sa pamamagitan ng hard links sa global na imbakan. Ang pagpili ng tagapamahala ay depende sa mga kagustuhan ng team at imprastraktura.

Mga Madalas Itanong

Ano ang pagkakaiba ng npm install at npm ci?

npm install ay nag-a-update ng package-lock.json at maaaring mag-install ng mga bagong minor na bersyon sa loob ng semantic range. npm ci (Clean Install) ay nagtatanggal ng node_modules at nag-i-install ng mga pakete nang mahigpit ayon sa package-lock.json nang hindi ito ina-update. Ang npm ci ay mas mabilis, ginagamit sa CI/CD at ginagarantiyang magkaparehong kapaligiran sa lahat ng makina. Kung walang package-lock.json, nagbibigay ng error ang npm ci.

Paano ayusin ang mga conflict ng peer dependencies sa npm?

Mula npm 7, ang mga conflict ng peer dependencies ay nagdudulot ng error sa build. Solusyon: i-update ang lahat ng pakete sa tugmang bersyon sa pamamagitan ng npm update, gamitin ang flag na --legacy-peer-deps para sa npm 6 mode, o magdagdag ng overrides section sa package.json para pilitin ang bersyon ng isang partikular na pakete. Pinakamahusay na opsyon — i-update ang mga dependency sa tugmang bersyon.

Ano ang npm audit at bakit ito kailangan?

npm audit ay nag-scan ng dependency tree para sa mga kilalang kahinaan mula sa npm Security Advisory database. Ang utos ay nagpapakita ng ulat na may antas ng kritikal (critical, high, moderate, low) at nagrerekomenda ng npm audit fix para sa awtomatikong pag-update ng mga vulnerable na pakete sa ligtas na bersyon. Regular na pagpapatakbo ng npm audit — pangunahing kasanayan sa seguridad sa JavaScript projects.

Paano pinapasimple ng npm workspaces ang monorepo?

npm workspaces ay nagpapahintulot ng pamamahala ng maraming pakete sa isang repositoryo. Idagdag ang field na "workspaces": ["packages/*"] sa root package.json. Mga kalamangan: nag-iisang pag-install ng lahat ng dependency sa shared node_modules, awtomatikong symlink sa pagitan ng lokal na pakete, pagpapatakbo ng mga script para sa lahat ng pakete mula sa root, pag-aalis ng pagdoble ng bersyon.

Bakit dapat i-commit ang package-lock.json sa repositoryo?

package-lock.json ay nag-aayos ng eksaktong bersyon ng lahat ng dependency at kanilang transitibong pakete. Kung wala ito, ang iba't ibang developer at CI server ay maaaring makakuha ng iba't ibang bersyon ng library sa loob ng semantic range, na humahantong sa mga error na "gumagana sa aking makina". Ang pag-commit ng lock-file ay ginagarantiyang reproducible builds at magkaparehong pag-uugali sa lahat ng kapaligiran.

Buod

  • npm — ang karaniwang tagapamahala ng pakete ng Node.js, kasama sa pag-install ng Node.js mula bersyon 0.6.3
  • package.json — file ng configuration ng proyekto na may mga dependency, script, at metadata
  • npm install — pag-install ng dependency, npm ci — pag-aayos ayon sa package-lock.json para sa CI/CD
  • package-lock.json — pag-aayos ng eksaktong bersyon, kinakailangan para sa reproducible builds
  • npm Registry — pinakamalaking rehistro ng pakete na may mahigit 2 milyong module
  • npm audit — pagsusuri ng seguridad ng dependency na may awtomatikong pag-aayos ng kahinaan
  • npm workspaces — mekanismo para sa pamamahala ng monorepo na may shared node_modules

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din