- npm inopa manejimendi ekutarisira kuvimba, shanduro, uye scripting inodiwa kuronga mapurojekiti anotarisana nenguva yekushanda yeCloudflare.
- Workerd inosiyana neNode.js nekutarisa pamaAPI akachengeteka, ewebhu-standard, anoda mazinga ekubatana kwemamodules chaiwo eNode.
- Iyo nodejs_compat_v2 mode itsva inosanganisa maC++ implementations emuno, unenv polyfills uye mocks kuti ivandudze zvikuru rutsigiro rwepakeji yenpm.
- Kuisa module panzvimbo imwe chete uye kusarudza ma polyfills kunokutendera kuti ugadzirise maitiro ekushandisa zvinhu zvisingaenderane uye kuvhura zvakawanda zve npm ecosystem paWorkers.
Kubatanidza npm ecosystem neCloudflare's workerd runtime Zvinogona kunzwika sezvisinganzwisisike, asi pasi pemusoro zvese ndezvekuita kuti kodhi nemapakeji eNode.js-style ashande zvakanaka papuratifomu iri pakati pewebhu. Cloudflare Workers nePages ikozvino zvinopa Node.js compatibility layer yakagadziridzwa inokutendera kuti utore mamwe mapakeji akawanda eNpm pasina kurwisana nemisiyano yakaderera pakati penguva dzekushanda.
Chinyorwa ichi chinotsanangura kuti mapakeji e-npm anosangana sei ne workerd uye mireza mitsva yekuenderana, zvichiratidza kuti nei mamwe mapakeji aimbotadza kushanda uye chii chinochinja ne nodejs_compat_v2 mode. Uchaonawo kuti maitiro e npm (kuisa, kugadzirisa, zvinyorwa uye mhando dzekuvimba) anoenderana sei nemapurojekiti anotarisana nevashandi kuitira kuti ugone kuronga maapplication nechivimbo uye kudzivirira kushamisika.
Chii chinonzi npm uye nei chichikosha kune vashandi
npm inoramba iri maneja wepakeji yeNode.js, ichipa simba kune ese server-side code uye chikamu chikuru che frontend tooling yanhasi. Yakatanga semaneja wekutarisira asi yakakurumidza kuchinja kuita universal registry uye CLI iyo inenge ichishanda nevagadziri veJavaScript zuva nezuva.
Iyo npm registry ine mamirioni emapakeji, zvinoreva kuti panogona kunge paine raibhurari yezvese zvinonetsa: ma HTTP clients, authentication, database drivers, build tools, testing frameworks nezvimwe. Kune workerd neCloudflare Workers, iyi ecosystem iropafadzo uye dambudziko: unowana mukana wekushandisa maturusi akawanda, asi akawanda akavakwa tichifunga nezveNode.js runtime pane web‑standard environment.
npm inonyanya kukosha pakushanda kwepamberi, uko mabundler, matranspiler uye ma linter akaiswa se dependencies e dev‑time. Ingave kuvaka React SPA kana Worker script inoshanda pa workerd, ungangoshandisa npm (kana Yarn/pnpm) kugadzirisa dependencies uye scripts.
Pachinyanya kukosha, npm inoisa otomatiki, inovandudza uye inotevedzera kuvimba, kuchengetedza mamodule mukati node_modules uye zvinodiwa zvekurekodha mu package.jsonKune vashandi vanoshanda pabasa, npm setup yako inoita seinozivikanwa, asi nguva yekushandisa kodhi yako ndiyo injini yevashandi kwete Node.js pachayo.
Dzimwe nzira dzakadai seYarn nepnpm dzinopa maCLI akasiyana uye hunhu hwekuita., asi kana tichitarisa workerd pfungwa yacho yakafanana: maneja wepakeji anogadzirisa mamodule ukuwo Cloudflare's build tooling uye compatibility flags zvichisarudza kuti mamodule iwayo anoitwa sei munguva yekumhanya yeWorker.
Kushanda kwekuisa kuvimba ne npm

Kumhanyisa murairo we npm install wakajairika kuchazadza yako node_modules nekuverenga runyorwa rwevanhu vanovimba nezvinodiwa uye kudhonza mupakeji yega yega yakanyorwa pamwe chete nekuchinja kwayo, kuitira kuti usatevere zvinodiwa nemaoko.
Kuti uwedzere raibhurari itsva unowanzo mhanyisa murairo mumwe chete wekuisa, uye kubvira npm 5 inowedzerwa otomatiki ku dependencies chikamu che package.json kunze kwekunge wabvisa maitiro iwayo.
npm inotsigira mireza inoronga mashandisirwo anoitwa pakeji muchirongwa chako, izvo zvinobatsira kana uchitarisa nguva dzekushanda senge workerd kwaungade mabundle akasiyana kana maitiro ekuvaka:
--save-devinowedzera pasuru iyi kudevDependencies, ichiratidza kuti inodiwa chete panguva yekuvandudza kana kuvaka matanho akadai sekuyedza kumhanya kana kuti mabundler.--no-saveanoisa pasina kugadzirisapackage.json, inobatsira pakuedza nekukurumidza kana mirairo yekamwe chete.--save-optionalinoisa pasuru yacho muoptionalDependencies, saka kukundikana kwekuisa kwayo hakukanganisi maitiro ese.--no-optionalinodzivirira kuiswa kwezvido zvekusarudza, kuderedza tsoka kana kudzivirira mapakeji esarudzo ane matambudziko pane mamwe mapuratifomu.
Kusiyana pakati dependencies uye devDependencies zvinokosha pakuvaka vashandi, nekuti runtime dependencies chete ndiyo inowanzoda kuunganidzwa uye kutumirwa; dev dependencies dzinobviswa panguva yekuvaka, zvichiita kuti ma deployments ave madiki.
Kuvimba nesarudzo kunokupa mukana wekugadzirisa kutadza nenzira inochinjika, asi kodhi yako inofanira kutarisa kuwanikwa usati wavimba nayo. Izvi zvinobatsira kana package ichifanira kushandisa ma implementation akasiyana muNode.js vs. workerd kana kudzokera shure kana native module isingatsigirwe.
Kugadzirisa zvichangobva kuitika uye shanduro mumapurojekiti eNpm
murairo wekuvandudza waNpm unovandudza mapakeji zvichienderana nemazinga e semver aunozivisa, kuongorora mamodule akaiswa uye kuagadzirisa kune mavhezheni matsva anotenderwa kune ese ari maviri anoenderana zvakananga uye ane ma nested dependencies.
Unogona zvakare kugadzirisa pasuru imwe chete kana zvichidikanwa, zvinobatsira kana raibhurari ikaburitsa bug fix kana kuvandudzwa kunokanganisa Worker yako kana kuti inoenderana nenguva dzisiri dzeNode dzakadai se workerd.
npm inotevera semantic versioning, ichikubvumidza kudzora miganhu yekusimudzira nemazvo, izvo zvakakosha kana Mushandi wako achivimba neraibhurari yakabatana neshanduro huru chaiyo kana kana shanduko dzinokanganisa dzichiunzwa kumusoro.
Kukiya shanduro uye kushandisa ma lockfiles kunoita kuti zvive nyore kudzokororwa, saka mapoka nenzvimbo dzeCI dzinogadzira girafu yakafanana yekuvimbana pakati pevashandi vemunharaunda vanovandudza, vanogadzira uye vanogadzira.
npm scripts uye otomatiki mumabasa ekushanda akavakirwa pavashandi
The scripts munda mu package.json inoshanda semumhanyi wescript yako, zvichikubvumidza kuti uronge mazita mapfupi kumirairo mirefu yeCLI wobva waaita ne npm run <script-name>.
Mapurojekiti emazuva ano anoshandisa npm scripts kuputira maturusi ekuvaka, bvunzo uye mabundlers, uye mapurojekiti evashandi anotarisana nevashandi anowanzo ratidza mirairo yekubatanidza, kutarisa mhando uye kuendeswa kwemabasa nenzira iyi.
Maitiro akajairika ndeekubatanidza bundler kana task runner kuburikidza nekunyora script, vachishandura chikumbiro chakaoma cheCLI kuita murairo uri nyore unowanikwa nechikwata chose.
Kunyora pasi kunova nesimba kana kwabatanidzwa neNode.js compatibility flags ye workerd, sezvo zvinyorwa zvichigona kudzora kuti ndeapi ma compatibility options ari kushanda uye kuti ndeapi ma polyfills kana ma aliase anoshandiswa usati wabatanidza Worker yekupedzisira.
workerd vs Node.js: kunzwisisa nguva yekumhanya
workerd injini yeJavaScript neWebAssembly yakavhurika yakagadzirirwa kushanda kwe edge, yakavakirwa paV8—injini imwecheteyo yakaderera inoshandiswa neNode.js neChromium—asi yakagadzirwa nemamiriro akasiyana ekushanda uye mamodheru ekuvimba.
Node.js yakagadzirwa kuti ishandise JavaScript pane host OS uye inoburitsa maAPI esystem ane simba zvakaita se process, fs uye zvishandiso zve crypto zvepadanho rakaderera, zvichiita kuti zvive zvakanaka kune maseva, maCLI uye zvivakwa zve backend zvine mukana wekupinda zvakananga muchina.
workerd yakagadzirirwa kumhanyisa kodhi isina kuvimbika mumaitiro e multi-tenant edge, vachisimbisa kuzviparadzanisa uye maAPI anotarisa pawebhu senge fetch, nzizi uye Cloudflare‑specific bindings (KV, Durable Objects, internal RPC) pane filesystem kana process access.
Kuti vawedzere kushanda pamwe chete, Cloudflare yakabatsira kutanga WinterCG, nechinangwa chekubatanidza nguva dzekushanda kweJavaScript padivi peseva uye puratifomu yewebhu yakatenderedza seti yeAPI yakafanana kuitira kuti maapplication aite zvakafanana munzvimbo dzakasiyana siyana.
Zvisinei, mapakeji mazhinji e npm anofungidzira nharaunda yeNode.js uye import mamodule akavakirwa mukati se events, fs, net, crypto or bufferPasina compatibility layer, zvinhu izvi zvinogona kutadza kushanda nekuti workerd haipe otomatiki maNode‑specific modules.
Kubva kuma polyfills kusvika kuma Node.js APIs akavakwa muVashandi
Cloudflare pakutanga yaivimba nema polyfills kuti ikwanise kubatanidza Node.js ne workerd, vachishandisa JavaScript implementations kutevedzera Node APIs. Muna 2021 Workers vakawana polyfill‑based compatibility mode, uye Wrangler akatanga kuisa polyfills idzodzo paakaita node_compat = true yakaiswa mukati wrangler.toml.
ne node_compat = true, Wrangler akabatanidza mashandisirwo eJS emamodules akawanda ecore Node, kushandisa maplugins akaita se @esbuild-plugins/node-globals-polyfill uye rollup-plugin-node-polyfills saka zvinhu zvinopinzwa kunze kwenyika zvakaita se import EventEmitter from 'events' anogona kushanda muMushandi.
MaPolyfills akagonesa mapakeji mazhinji eNpm kushanda paWorkers asi aive nemiganhu, kunyanya kune ma module anoita basa guru re binary kana crypto uko ma native implementations ari nekukurumidza uye akarurama kupfuura pure JS shims.
Buffer muenzaniso wakajeka wechinhu chakaoma kutevedzera zvinobudirira munyika yevashandisi, sezvo mashandiro akaita sekukopa nekushandura maencoding achibatsirwa nekushandiswa kwakagadzirwa native. Izvi zvinoshandawo kumaAPI akaita se Crypto uye AsyncLocalStorage.
Kuti ivandudze mashandiro uye kukwana, Cloudflare yakatanga kuisa mamwe maNode APIs munguva yekumhanya. muna 2023 kuburikidza ne nodejs_compat mureza; ma core modules aya anoshandiswa muC++ uye anoonekwa kuWorkers kuti ave akavimbika kupfuura maJS polyfills.
Paunenge uchishandisa maNode modules akavakwa mukati muWorkers unofanira kuapinza ne node: chivakashure, Semuyenzaniso import { Buffer } from 'node:buffer', zvichiratidza kuvimba ne module yakapihwa nenguva yekumhanya kwete package yerejistri.
Nei mapakeji mazhinji e-npm achiri kutadza ne early nodejs_compat
mangwanani nodejs_compat zvichiri kukonzera kutadza nekuti maraibhurari mazhinji akashandisa zvinhu zvakatorwa zvisina prefixed, semuenzaniso, import { EventEmitter } from 'events', iyo bundler yaibata semamodules ehurongwa hwefaira uye yakatadza kugadzirisa payakanga isipo.
Kanganiso yakajairika yakaitika pakutumira madhiraivha akaita se pg izvo zvinoenderana nema core modules asina prefixed, zvichikonzera matanho ekuvaka ekunyunyuta kuti module haina kuwanikwa kunyangwe Node ichiiona seyakavakirwa mukati.
Vagadziri vakatarisana nekuchinjana pakati perutsigiro rweAPI diki rwemuno nerutsigiro rwepolyfill runononoka uye rusina kukwana, pamwe chete nemaglobal asipo akadai se process iyo maraibhurari mazhinji aifungidzirwa kuti aizovapo pane chinhu chepasi rose.
Kukakavadzana ikoko kwakaita kuti zviome kushandisa zvakavimbika mapakeji akaomarara e npm pa workerd, kunyanya kana maNode modules kana maglobals asina kunanga aitarisirwa, zvichikonzera kukundikana kwenguva yekuvaka usati watanga kushanda.
Iyo nodejs_compat_v2 itsva: rutsigiro rwuri nani rwe npm pa workerd
nodejs_compat_v2 inosanganisa mashandisirwo emuno nema polyfills aripo pakudiwa, zvichiita kuti npm ecosystem ishandiswe zvakanyanya paWorkers nekusarudza kuti woshandisa riini C++‑backed modules, JS polyfills kana lightweight stubs zvinoita kuti imports ibudirire.
Shandisa iyi mode nekuwedzera compatibility_flags = ["nodejs_compat_v2"] to wrangler.toml, izvo zvinoshandura maitiro anoita runtime kuburitsa pachena maNode APIs uye maitiro anoita Wrangler kusanganisa Node‑style imports uye dependencies.
Mapakeji mazhinji akambotadza kupinza ikozvino anotakurwa nemazvo pasi pev2, kusanganisira maraibhurari akadai se body-parser, jsonwebtoken, got, passport, knex nezvimwe—kuderedza zvikanganiso zvenguva yekuvaka panzvimbo pemhinduro yenguva yekushanda yemabasa asina kutsigirwa.
Mu v2 unogona kunyora zvinhu zvinopinzwa zvakaita se import { Buffer } from 'buffer' uye nguva yekumhanya inovafambisa zvinobudirira kune C++‑backed implementations; panguva imwe chete, mamodules akaita se net inogona kuzadzwa neWrangler uchishandisa unenv, zvichiita kuti maAPI emuno neemaAPI akazadzwa nepolyfilled agare pamwe chete pasina kusawirirana.
Wrangler ikozvino inobaya ma polyfill chete kuma Node modules ayo Worker anoshandisa chaizvo, kuchengetedza saizi dzemabundle dzakatetepa nekuongorora kodhi uye zvinoenderana panzvimbo pekutumira suite yakazara yemapolyfills nedefault.
unenv polyfills uye Node.js APIs dzakasekwa
Kana pasina kuwanikwa kwe native implementation kana mature polyfill, unenv inopa ma modules ekuseka zvinoburitsa ma interface akafanana asi zvichiita kuti pasave nema "no-ops" kana kuti zvinokanda zvikanganiso zve "descriptive runtime errors" kana nzira dzisina kutsigirwa dzikashandiswa.
Zvikanganiso zvakaita se [unenv] <method name> is not implemented yet! zviri pachena uye zviri munzvimbo dzakasiyana, kurega Mushandi achitanga nekukundikana panzvimbo yekufona chete izvo zvinokonzera kusawirirana pane kurega panguva yekuvaka.
Mamodule akasekwa anoita kuti mapakeji anoenderana zvishoma neNode features achiri kupinzwa uye kushandiswa, chero bedzi uchidzivisa zvidimbu zvisingatsigirwi; zvikamu zvakachengeteka zvinogona kushanda ukuwo mabasa anoenderana nefaira achikonzera zvikanganiso chete kana zvaitwa.
Kare, chero kupinzwa kwe fs zvinogona kuita kuti pasuru isashande muVashandi, asi na nodejs_compat_v2 uye unenv inoseka kuti kuvimba kunogona kuverengerwa uye kushevedzwa nesarudzo.
Kuchinja uku kubva pakuva nenguva yekuvaka kuenda kumhinduro yenguva yekushanda kunoita kuti kugadzirisa matambudziko kuve nyore, nekuti unogona kuona kuti ndeipi nzira chaiyo uye kuita kuti stack trigger isashande zvakanaka wobva wagadzirisa kodhi kana kupa ma polyfills kana mazita evamwe senzira yekugadzirisa dambudziko.
Module aliasing: kugadzirisa maitiro ekutarisira matambudziko
Module aliasing inokutendera kuti utungamire zvinhu zvinopinzwa kune zvaunoita wega., yakagadzirirwa mu wrangler.toml, saka nzira yemodule ine dambudziko inogadziriswa kuita faira rakagadzirwa panzvimbo pemaitiro akajairika.
Kana raibhurari ichivimba ne fs.readFile asi haudi mukana wekuwana system yefaira, mamwe mazita "fs" to ./fs-polyfill uye kufumura tsika readFile iyo inochengeta, inodana imwe API kana kuverenga kubva kuKV.
Mushure mekusiyana, kupinza zvinhu zvakaita se import { readFile } from 'fs' sarudza module yako wobva wapfuura maitiro e unenv, kudzivirira zvikanganiso "zvisati zvaitwa" ukuwo uchichengetedza pasuru yekushandisa isina kuchinja.
Kuisa zita remunhu kunobatsirawo kana munhu anovimba neNode achidhonza mapakeji chaiwo akadai se node-fetch, izvo zvinogona kuvimba nemaNode modules asina kutsigirwa; unogona kugadzira mepu "node-fetch" kune module inotumirazve zvinhu zvepasi rose fetch.
Zvishandiso senge nolyfill ita kuti mapatani ekutumirazve zvinhu kunze kwenyika ave nyore, zvichikugonesa kupfupisa mashandisirwo asingaenderane uye kuchengetedza mapakeji anoenderana nekushanda pa workerd.
Module aliasing inoshanda sechikamu chekuenderana chinochinjika pamusoro pe nodejs_compat_v2, zvichikubvumidza kugadzirisa mapakeji chaiwo pasina kuanyora patsva kana kuaisa paforogo.
Kushanda pamwe chete, kushandira pamwe chete kwenharaunda uye kutangwa kwemabasa
MaCritical Node.js APIs anoshandiswa muC++ mukati mevashandi anopa mashandiro ari nani uye kurongeka kuri nani, uye mamodule akaita se Buffer, AsyncLocalStorage uye Crypto batsirwa nekushandiswa uku kwemuno kwakaputirwa muJS shims dzinoratidza maitiro eNode.
Cloudflare inobatsira ku unenv, iyo inopa ma polyfills nema mocks akangwara, kana achidiwa, nekuti inotarisa nguva dzakawanda dzekushanda uye yakagamuchirwa nemapurojekiti akaita seNuxt neNitro; kuwedzera ma polyfills anodiwa chete kunoita kuti mapurogiramu arambe akareruka uye kunokurudzira kubatana kwe ecosystem.
Chinangwa chakakura ndechekutakurwa kweNode style code panguva dzakasiyana dzekushanda, saka vagadziri vanogona kunyora kamwe chete vomhanya paNode.js, workerd kana dzimwe nzvimbo dzisina kukweshana kwakanyanya nekusarudza otomatiki mapolyfills uye maficha emuno zvichienderana nekushandiswa.
Maitiro akavandudzika mu nodejs_compat_v2 inotarisirwa kuva iyo isingawanzoitiki nekufamba kwenguva Kana zuva rekuenderana kweMushandi wako rava richangoburwa, saka Vashandi vakawanda vachabatsirwa pachena nekuenderana kwakasimba kwenpm pasina mamwe magadzirirwo.
Vagadziri vanokurudzirwa kuti vaedze kufambirana kweNode.js kwakagadziridzwa uye vagadzirise yavo wrangler.toml, vachizivisa kusawirirana kwasara kana zvikanganiso kuburikidza nenzira dzemhinduro kuitira kuti mipata ivharwe.
Kusanganiswa kwehutungamiriri hwekuchengetedza ruzivo rwemakomputa hwaNpm, nguva yekumhanya yakachengeteka yewebhu yaworkerd uye nhanho yekubatana kweNode.js iri kuchinja. inokupa nzira inoshanda yekushandisa zvakare huwandu hwakawanda hweJavaScript code iripo uku uchishandisa edge execution, isolation uye Cloudflare's platform features. Ne smart polyfills, native implementations, mocking uye module aliasing yauinayo, zvinova zvechokwadi kuunza npm package dzakaomarara mumapurojekiti ako eWorkers pasina kugara uchirwisa runtime.