当前位置: 首页 > Web前端 > HTML

前端依赖管理那些事儿

时间:2023-03-29 12:13:06 HTML

涓昏鍐呭馃摑浠€涔堟槸渚濊禆馃摛渚濊禆浠庡摢閲屾潵馃す瀹夎鍒板摢閲岎煄ョ増鏈帶鍒娥煣戔€嶐煉讳粈涔堥渶瑕佸畨瑁呬粈涔堜笉闇€瑕佸畨瑁咅煄╬ackage-lock.json馃洜npminstall杩囩▼涓鏌ョ湅鐨勫唴瀹规槸涓€涓緷璧栥€傛湁鏃讹紝渚濊禆椤规槸涓€鍫嗗彲鎵ц浠g爜锛涙湁鏃讹紝渚濊禆椤瑰彧鏄竴涓0鏄庛€?銆佸綋鎴戜滑鐨勪笟鍔¢€昏緫涓娇鐢ㄥ埌Vue鏃讹紝鎴戜滑鍙渶瑕佷緷璧栵紙寮曞叆锛夊畠锛屾垜浠氨鍙互鍒╃敤瀹冪殑鑳藉姏浠?vue'鎴栬€?scriptsrc="https://unpkg.com/vue"瀵煎叆vue@next">姝ゆ椂渚濊禆灏辨槸鑾峰彇涓€鍫嗗彲鐢ㄧ殑浠g爜2.鎴戜滑鍦ㄥ紑鍙戠粍浠跺簱鐨勬椂鍊欙紝闇€瑕佺敤鍒癡ue涓殑涓€浜涙柟娉昳mport{ref}from'vue'inthisscenario鎺ヤ笅鏉ワ紝缁勪欢浣跨敤鐨剉ue.js鍏跺疄灏辨槸瀹夸富鐜鎵€渚濊禆鐨剉ue銆傚湪杩欎竴鐐逛笂锛屼緷璧栭」鍙槸澹版槑浠庡摢閲岃幏鍙栦緷璧栭」銆傛墦鍖呬簡鍝簺闈欐€佹枃浠讹紵CDN瀵煎叆浠撳簱绾у紩鐢ㄣ€備粠npm婧愬畨瑁呴潤鎬佹枃浠躲€傚紩鍏DN鐨勪紭鐐癸細澶氬煙澶嶇敤锛屽氨杩戜紶杈擄紝閫氳繃璺ㄥ煙杈惧埌绐佺牬娴忚鍣ㄥ苟鍙戦檺鍒剁殑鏁堟灉鈥︹€︾己鐐癸細寮曞叆鍏叡CDN璧勬簮闇€瑕佽繘琛岄闄╄瘎浼帮紝閬垮厤CDN鍩熷悕姹℃煋鍚庤祫婧愬紓甯搞€傘€奊it 涓?submodule 鐨勪娇鐢ㄣ€嬩粠npm婧愬畨瑁?.鍏綉npmregistrynpminstallvue2銆傜鏈塶pmregistrynpminstall@xxfe/babel-plugin-icover--registry=http://ires.xxcorp.com/repository/xxnpm/.npmrc鎸囧畾浠撳簱婧愬湴鍧€registry=http://ires.xxcorp.com/repository/xxnpm/鎴?/鍦ㄧ壒瀹氬懡鍚嶇┖闂翠笅@xxfe:registry=http://ires.xxcorp.com/repository/xxnpm/3銆傛寚瀹歡it浠撳簱{"name":"foo","version":"0.0.0","dependencies":{"express":"git+ssh://git@github.com:npm/cli.git#v1.0.27"}}閫氳繃鎸囧畾鍗忚銆佷粨搴撳湴鍧€銆乼ag/commit-hash绛変俊鎭紝鍙互鍑嗙‘鎸囧畾鏌愪釜鐗堟湰鐨勪唬鐮佹枃妗o紝渚涘弬鑰冿細銆妌pm docs銆?.post-install鐜╂硶鍙鍚嶇О锛宲ost-install鐨勫惈涔夋寚鐨勬槸瀹夎鍚庝細涓诲姩瑙﹀彂鐨勯挬瀛愩€傞€氳繃鎵ц杩欎釜hook涓殑鑴氭湰锛屼綘鍙互涓嬭浇浠讳綍浣犳兂瑕佺殑鍐呭锛屽寘鎷絾涓嶉檺浜庯細.exe,.avi,.pdf绛?..npminstall鐨勬墽琛岃繃绋嬩細缁忚繃涓変釜hook鏂规硶锛歱reinstallinstallpostinstallnpminstall鍛戒护鍚姩锛屾牴鎹」鐩畾涔夊喅瀹氭槸鍚︽墽琛宲reinstall锛宨nstall鍜宲ostinstall鏄痭pminstall鍛戒护蹇呴』鎵ц鐨勯樁娈点€傛枃妗e弬鑰冿細銆妌pm docs銆嬨€婃互鐢?npm 搴撳鑷存暟鎹殫娓°€媤heretoinstallnode_modules?褰撶劧鏄鐨勶紒浣嗕笉瀹屽叏鏄€侱ependencyHell璇村埌node_modules锛屾€绘槸绂讳笉寮€鐪嬪畠鐨刣ependencyhellmap銆備笅闈互React鍜孷ue涓轰緥锛屽垎鍒畨瑁咃紝閫氳繃cli宸ュ叿锛宯ode_modules鐨勫畨瑁呯粨鏋滐細鍒嗗埆瀹夎React鍜孯eactDOM锛屽崰鐢ㄧ┖闂?.2M锛涘崟鐙畨瑁匳ue(3.x)锛屽崰鐢?6.3M绌洪棿锛涗娇鐢╟reate-react-app鍒涘缓涓€涓┖鐧界殑React椤圭洰锛屽崰鐢ㄧ┖闂?44.8M锛涗娇鐢╲ue-cli鍒涘缓涓€涓┖鐧界殑Vue椤圭洰锛屽崰鐢?63.9M绌洪棿銆俷ode_moduleslevelnpm2.xversionnode_moduleslevel-recursive鍏堝畾涔変竴涓娉旳{B,C}琛ㄧずA鍖呬緷璧朆鍖呭拰C鍖匒{D@1.0.0},B{D@2.0.0},C{D@1.0.0}鈹溾攢鈹€node_modules鈹傗敎鈹€鈹€A@1.0.0鈹傗攤鈹斺攢鈹€node_modules鈹傗攤鈹傗敂鈹€鈹€D@1.0.0鈹傗敎鈹€鈹€B@1.0.0鈹傗攤鈹斺攢鈹€node_modules鈹傗攤鈹傗敂鈹€鈹€D@2.0.0鈹傗敂鈹€鈹€C@1.0.0鈹傗攤鈹斺攢鈹€node_modules鈹傗攤鈹傗敂鈹€鈹€D@1.0.0鍙互鎯宠薄锛岃繖鏍风‘瀹炲彲浠ヤ繚璇佹瘡涓€涓狝vailability涓€涓ā鍧楁湰韬€備絾鏄紝褰撻」鐩妯¤揪鍒颁竴瀹氱▼搴︽椂锛屼篃浼氬甫鏉ュ緢澶氶棶棰橈細渚濊禆鏍戠殑灞傜骇寰堟繁銆傚鏋滀綘闇€瑕佸畾浣嶄竴涓緷璧栫殑渚濊禆锛屽緢闅炬壘鍒拌繖涓緷璧栫殑鏂囦欢锛堟瘮濡備綘瑕佸畾浣嶆ā鍧桪锛屼綘蹇呴』鐭ラ亾瀹冨湪渚濊禆鏍戜腑鐨勪綅缃級锛涘湪涓嶅悓鐨勪緷璧栨爲鍒嗘敮涓紝鍙兘鏈夊ぇ閲忕殑瀹為檯涓婇潰鏄悓涓€涓増鏈殑渚濊禆锛堟瘮濡侱@1.0.0鍦ˋ鍜孋涓嬪氨鏄悓涓€涓増鏈級锛涘畨瑁呰繃绋嬩腑涓嬭浇鎴栧鍒跺ぇ閲忛噸澶嶈祫婧愶紝瀹為檯鍗犵敤澶ч噺纭洏绌洪棿璧勬簮绛夛紙濡侱妯″潡鍦ㄤ緷璧栫洰褰曞嚭鐜?娆★級锛涘畨瑁呴€熷害鎱紝鐢氳嚦鍥犱负鐩綍灞傜骇澶繁锛屾枃浠惰矾寰勫お闀匡紝鍒犻櫎windows绯荤粺鐨刵ode_modules鏂囦欢澶逛篃鏈夊彲鑳藉け璐ワ紒杩欏彲浠ユ弿杩颁负锛氬効瀛愮敓瀛欏瓙锛屽瓩瀛愮敓鍎垮瓙锛屽瓙瀛欐棤绌锋棤灏解€︹€pm3.x鐗堟湰node_modules绾у埆-鎵佸钩鍖杗pm3.x鐗堟湰涔嬪悗锛宯pm閲囩敤鏇村悎鐞嗙殑鏂瑰紡瑙e喅渚濊禆璇ユ鐨勯棶棰樸€俷pm3.x鍦ㄩ」鐩牴鐩綍涓嬬殑node_modules鏂囦欢澶逛腑灏介噺灏嗕緷璧栧拰渚濊禆鎵佸钩鍖栵紝浠ヤ緵鍏变韩浣跨敤锛涘鏋滅増鏈姹備笉涓€鑷村鑷村啿绐侊紝娌″姙娉曟斁鍒癴lat鐩綍涓嬶紝閫€鍥炲埌npm2.x鐨勫鐞嗘柟寮忥紝灏嗗啿绐佺殑妯″潡瀛樻斁鍦ㄦ湰妯″潡涓嬬殑node_modules涓€侫{D@1.0.0},B{D@1.0.0},C{D@2.0.0}鈹溾攢鈹€node_modules鈹傗敎鈹€鈹€A@1.0.0鈹傗敎鈹€鈹€B@1.0.0鈹傗攤鈹€鈹€C@1.0.0鈹傗攤鈹斺攢鈹€node_modules鈹傗攤鈹傗敂鈹€鈹€D@2.0.0鈹傗敎鈹€鈹€D@1.0.0Spectre渚濊禆闂A{D@2.0.0},B鈹溾攢鈹€node_modules鈹傗敎鈹€鈹€A@1.0.0鈹傗敎鈹€鈹€B@1.0.0鈹傗敎鈹€鈹€D@2.0.0constA=require('A');constD=require('D');???

  • 渚濊禆鍏煎鎬ч棶棰?鐗堟湰涓嶅吋瀹?/li>
  • 渚濊禆缂哄け闂-缂哄け鎶ラ敊
  • 涓嶇‘瀹氭€ч棶棰楢@1.0.0{C@1.0.0}锛孊@1.0.0{C@2.0.0}node_modules鈹溾攢鈹€A@1.0.0鈹溾攢鈹€B@1.0.0鈹傗敂鈹€鈹€node_modules鈹傗敂鈹€鈹€C@2.0.0鈹溾攢鈹€C@1.0.0node_modules鈹溾攢鈹€A@1.0.0鈹傗敂鈹€鈹€node_modules鈹傗敂鈹€鈹€C@1.0.0鈹溾攢鈹€B@1.0.0鈹溾攢鈹€C@2.0.0渚濊禆澶村儚/澶氫釜渚濊禆A{B@1.0.0},C{B@2.0.0},D{B@1.0.0},E{B@2.0.0}node_modules鈹溾攢鈹€A@1.0.0鈹溾攢鈹€B@1.0.0鈹溾攢鈹€D@1.0.0鈹溾攢鈹€A@1.0.0鈹溾攢鈹€B@1.0.0鈹溾攢鈹€D@1.0.0鈹溾攢鈹€鈹€鈹€C@1.0.0鈹傗敂鈹€鈹€node_modules鈹傗敂鈹€鈹€B@2.0.0鈹斺攢鈹€E@1.0.0鈹斺攢鈹€node_modules鈹斺攢鈹€B@2.0.0鐗堟湰鎺у埗^1.1.0and~1.1.鍜?鏈変粈涔堝尯鍒紵1.01.02鍚堟硶鍚楋紵1.0.1,1.0.1-alpha.2,1.0.1-rc.2杩欎笁涓増鏈彿浠庡ぇ鍒板皬鐨勯『搴忔槸浠€涔堬紵vue@latest搴旇鎵撳摢涓増鏈紵璋佹潵鍐冲畾锛焩ue@v2-beta鎬庝箞鏍凤紵鍦ㄨ蒋浠剁鐞嗛鍩熷瓨鍦ㄧ潃琚О涓衡€滀緷璧栧湴鐙扁€濈殑姝讳骸涔嬭胺銆傜郴缁熻秺澶э紝娣诲姞鐨勫寘瓒婂锛屾湁涓€澶╂偍瓒婃湁鍙兘鍙戠幇鑷繁澶勪簬缁濇湜鐨勭姸鎬併€傚湪鍏锋湁楂樹緷璧栨€х殑绯荤粺涓彂甯冩柊鐗堟湰鐨勫寘寰堝揩灏变細鍙樻垚涓€鍦哄櫓姊︺€傚鏋滀緷璧栧お楂橈紝鍙兘浼氶潰涓寸増鏈帶鍒惰閿佸畾鐨勯闄╋紙蹇呴』淇敼姣忎釜渚濊禆鍖呮墠鑳藉畬鎴愬崌绾э級銆傚鏋滀緷璧栬繃浜庢澗鏁o紝鍒欐棤娉曢伩鍏嶇増鏈贩娣嗭紙鍋囪涓庢湭鏉ョ増鏈殑鍏煎鎬ц秴杩囧悎鐞嗘暟閲忥級銆傚綋浣犵殑椤圭洰鍥犱负鐗堟湰渚濊禆琚攣鎴栬€呯増鏈贩涔卞鑷撮」鐩繘灞曚笉椤哄埄涓嶅彲闈犳椂锛屽氨鎰忓懗鐫€浣犻櫡鍏ヤ簡渚濊禆鍦扮嫳銆傝繖灏辨槸涓轰粈涔堥渶瑕佷娇鐢⊿emanticVersioningSemVerSemanticVersioning锛岀畝绉癝emanticVersioning锛岃嫳鏂囩缉鍐欎负SemVer銆傝涔夌増鏈€氳繃涓€缁勭畝鍗曠殑瑙勫垯鍜屾潯浠舵潵绾︽潫鐗堟湰鍙风殑閰嶇疆鍜屽闀裤€傝繖浜涜鍒欐槸鏍规嵁锛堜絾涓嶉檺浜庯級宸茶鍚勭灏侀棴銆佸紑婧愯蒋浠跺箍娉涗娇鐢ㄧ殑鎯緥璁捐鐨勩€侳ormat璇箟鐗堟湰鏍煎紡锛氫富鐗堟湰鍙枫€傛鐗堟湰鍙枫€備慨璁㈠彿(MAJOR.MINOR.PATCH)銆傜増鏈彿閫掑瑙勫垯濡備笅锛氫富鐗堟湰鍙凤紙MAJOR锛夛細閫氬父鍙湁鍦ㄩ噸鏋勬椂锛孉PI涓嶅悜涓嬪吋瀹规墠浼氬崌绾э紱娆¤鐗堟湰鍙凤紙MINOR锛夛細閫氬父鍦ㄥ鍔犳柊鐨勫悜鍚庡吋瀹瑰姛鑳芥椂鍗囩骇璇ョ増鏈彿锛涗慨璁㈠彿锛圥ATCH锛夛細閫氬父鍦ㄥ彂甯冨悜鍚庡吋瀹圭殑闂淇鏃讹紝鏇存柊涔嬪墠鐨勭増鏈彿鍜岀増鏈紪璇戜俊鎭彲浠ユ坊鍔犲埌鏈€鍚庣殑鈥滀富鐗堟湰鍙枫€傛鐗堟湰鍙枫€備慨璁㈠彿鈥濅綔涓烘墿灞曞悕銆傚厛鍓嶇増鏈彿蹇収锛氬揩鐓э紝涔熺О涓哄紑鍙戠増鏈紝澶勪簬寮€鍙戦樁娈点€傛鐗堟湰鐨勪唬鐮佺姝㈢敤浜庣敓浜с€侫lpha锛埼憋級锛氬唴娴嬬増锛屼緵鍐呴儴浜ゆ祦鎴栦笓涓氭祴璇曚汉鍛樹娇鐢ㄣ€侾review锛氶瑙堢増锛岀被浼间簬Alpha锛屾湁鏃跺張缁嗗垎涓篗1鍜孧2鐗堟湰銆侭eta(尾)锛氬叕娴嬬増锛屼緵涓撲笟鐖卞ソ鑰呰繘琛屽ぇ瑙勬ā娴嬭瘯浣跨敤锛屽瓨鍦ㄤ竴浜沚ug锛屼笉閫傚悎涓€鑸敤鎴枫€侴amma(位)锛氭洿鎴愮啛鐨勬祴璇曠増銆俁C锛圧eleaseCandidate锛夛細鍊欓€夌増鏈紝澶勪簬Gamma闃舵锛岃鐗堟湰宸茬粡瀹屾垚浜嗘墍鏈夊姛鑳斤紝娓呴櫎浜嗗緢澶歜ug銆傚湪姝ら樁娈碉紝鍙細淇閿欒锛屼笉浼氬杞欢杩涜閲嶅ぇ鏇存敼銆備竴鑸潵璇达紝Alpha->Beta->Gamma鏄竴绉嶈凯浠e叧绯伙紝鑰孯C1->RC2鏄竴绉嶆潈琛″叧绯汇€俁elease锛歳elease鐗堟湰锛屾寮忓彂甯冪殑鐗堟湰锛屽凡缁忚繃娴嬭瘯锛屼竴鑸笉浼氭湁涓ラ噸鐨刡ug锛岄€傚悎涓€鑸敤鎴蜂娇鐢ㄣ€傚浜庨潪寮€婧愮殑杞欢锛孯elease鍙兘鏄湁鏃堕棿闄愬埗鐨勫厤璐逛娇鐢ㄧ増鏈€係table锛氱ǔ瀹氱増锛屽悓Release鐗堛€傜増鏈尮閰嶇瓥鐣ユ垜浠細鍙戠幇瀹夎鐨勪緷璧栫増鏈細鍑虹幇锛歗1.1.0鎴栬€厏1.1.0锛岃繖鏄粈涔堟剰鎬濆憿锛熸ā绯婂尮閰嶇瓥鐣1.0.1,1,1.x琛ㄧず鐩稿悓浣嗚緝鏂扮殑鐗堟湰鍙峰彲浠ュ尮閰嶄富鐗堟湰銆倊1.0.1,1.1,1.1.x浠h〃鑳芥墦鍒板ぇ鐗堟湰鐨勭増鏈彿锛屽皬鐗堟湰鐩稿悓锛屼絾鏇存柊銆?鍜寈鍙互鍛戒腑浠讳綍鏂板彂甯冪殑鐗堟湰鍙枫€俤ist-tag鍜岀増鏈彿npminstallvue@latest#鎴栬€呭彟澶栦竴鍙pminstallvue@nextnpmcommand:dist-tagnpmdist-tagadd@[]//publishnpmpublish--tagbetabeta,latest,next,preview,legacy,v2-beta...鍝簺闇€瑕佸畨瑁咃紝鍝簺涓嶉渶瑕丵:鑳借娓呮椤圭洰涓璶ode_modules涓殑渚濊禆鏄€庝箞鏉ョ殑鍚楋紵涓轰粈涔堜粬浠涓嬭浇浜嗭紝涓轰粈涔堜粬浠彧琚笅杞戒簡锛焢ackage.json涓殑鍚勭渚濊禆dependencies锛堝簲鐢ㄤ緷璧栵紝鎴栬€呬笟鍔′緷璧栵級devDependencies锛堝紑鍙戠幆澧冧緷璧栵級peerDependencies锛堝绛変緷璧栵紝鎴栬€卲eer渚濊禆锛夆€斺€旀寚瀹氬綋鍓嶅寘鍏煎鐨勫涓绘満鐗堟湰锛屾瘮濡俫ulp鎻掍欢optionalDependencies锛堝彲閫変緷璧栵級鈥斺€斾笉闃诲鏁翠綋娴佺▼bundledDependencies锛堟墦鍖呬緷璧栵級鈥斺€斿寘鍚緷璧栧寘鍚嶇殑鏁扮粍瀵硅薄锛屽湪鍙戝竷鍖呮椂浼氭墦鍏ユ渶缁堝彂甯冨寘銆傚埌鑺傜偣妯″潡锛熺瓟妗堟槸锛欱銆丆銆丏銆丗dependencies鍜宒evDependencies鐨勫奖鍝嶄笉鏄珛绔胯褰辩殑锛岃€屾槸浠i檯鐩镐紶鐨勶紒鍙傝€冩枃绔爌ackage-lock.json宸茬粡鏈変簡package.json锛屼负浠€涔堣繕鏈塸ackage-lock.json鏂囦欢鍛紵椤圭洰渚濊禆A@1.0.0锛孉渚濊禆B@1.3.2鍜孋@2.0.3{"dependencies":{"A":"^1.0.0"}}瀹夎A鏃朵笅杞芥渶鏂扮増鏈紝姣斿1.2.3锛屾湁鍏煎鎬ч棶棰橈紝椤圭洰鏈塨ug锛涗緷璧朅鐨凚鍜孋涓嬭浇浜嗗叾浠栫増鏈紝瀵艰嚧A鍑虹幇闂锛屼粠鑰屽鑷撮」鐩嚭鐜伴棶棰樸€備綔鐢細鍦ㄥ畨瑁呮椂閿佸畾鍖呯殑鐗堟湰鍙峰拰鍖呯増鏈彿鐨勪緷璧栵紝淇濊瘉鍏朵粬浜轰娇鐢╪pminstall鏃朵笅杞界殑渚濊禆鍖卲ackage.json鍜宲ackage.json涓€鑷磒ackage-lock.json鐨勫嚑涓皬鎬荤粨锛歱ackage.json鏄敤鏉ュ憡璇塶pm宸ョ▼闇€瑕佽繍琛屽摢浜沺ackage鐨勶紝浣嗘槸浠呬粎閫氳繃杩欎釜鏂囦欢鏄棤娉曡瘑鍒玴ackage鏈€缁堝畨瑁呯殑鐗堟湰鐨勶紝package-lock.json鍚屾牱闇€瑕佷慨鏀筽ackage.json涓殑鐗堟湰鍙蜂細褰卞搷package-lock.json锛宲ackage.json鐨勪紭鍏堢骇楂樹簬package.lock.json銆備负浜嗕繚璇侀」鐩殑鐜渚濊禆涓€鑷达紝闇€瑕佸湪椤圭洰绉诲姩鐨勬椂鍊欏悓鏃跺鍒秔ackage.json鍜宲ackage.lock.json杩欎袱涓枃浠朵笉瑕佽交鏄撶Щ鍔╬ackage.json鍜宲ackage-lock.json鍒犱簡閲嶈浜嗕竴浼氾紝鐗堟湰涓嶅鐏懍鍦猴紒锛侊紒npminstall娴佺▼鍥為【鏈€鍚庯紝鎴戜滑鏉ョ湅涓€涓媙pminstall鐨勬墽琛屾祦绋嬶紝娣卞寲渚濊禆绠$悊鐨勫叿浣撲娇鐢ㄥ満鏅€傚皢鈥滃墠绔緷璧栤€濈撼鍏ョ煡璇嗕綋绯籲pm--install瀹夎杩囩▼璇﹁Вpackage-lock.json鐨勪綔鐢ㄧ増鏈牎楠屽伐鍏?/p>