国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

簡(jiǎn)單談?wù)勱P(guān)于 npm 5.0 的新坑

2019-11-19 16:23:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

前幾天升級(jí)了 Node.js v8.0 后,自帶的 npm 也升級(jí)到了5.0,第一次使用的時(shí)候確實(shí)驚艷到了:原本重新安裝一次模塊要十幾秒到事情,現(xiàn)在一秒多就搞定了。

先不要激動(dòng),現(xiàn)在我來(lái)大概講一下 npm 5 的一些大的變化:

  • 使用npm install xxx命令安裝模塊時(shí),不再需要--save選項(xiàng),會(huì)自動(dòng)將模塊依賴信息保存到 package.json 文件;
  • 安裝模塊操作(改變 node_modules 文件夾內(nèi)容)會(huì)生成或更新 package-lock.json 文件
  • 發(fā)布的模塊不會(huì)包含 package-lock.json 文件
  • 如果手動(dòng)修改了 package.json 文件中已有模塊的版本,直接執(zhí)行npm install不會(huì)安裝新指定的版本,只能通過(guò)npm install xxx@yy更新

重新安裝模塊之所以快,是因?yàn)?package-lock.json 文件中已經(jīng)記錄了整個(gè) node_modules 文件夾的樹(shù)狀結(jié)構(gòu),甚至連模塊的下載地址都記錄了,再重新安裝的時(shí)候只需要直接下載文件即可(這樣看起來(lái) facebook 的 yarn 好像沒(méi)有啥優(yōu)勢(shì)了)。

以下是 package-lock.json 文件的例子:

{ "name": "test_pkg_lock", "version": "1.0.0", "lockfileVersion": 1, "dependencies": { "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=" }, "cssfilter": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.8.tgz", "integrity": "sha1-ZWTKzLqKdt2bS5IGaLn7f9pQ5Uw=" }, "graceful-readlink": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, "xss": { "version": "0.2.18", "resolved": "https://registry.npmjs.org/xss/-/xss-0.2.18.tgz", "integrity": "sha1-bfX7XKKL3FHnhiT/Y/GeE+vXO6s=" } }}

帶來(lái)速度的同時(shí),npm 也挖了個(gè)大大的坑:

以后直接改 package.json 文件相應(yīng)模塊的版本號(hào),再執(zhí)行npm install不會(huì)更新了(好可怕),你只能手動(dòng)用npm install xxx@yy指定版本號(hào)來(lái)安裝,然后它會(huì)自動(dòng)更新 package-lock.json 文件。直接執(zhí)行npm install時(shí),如果不存在 package-lock.json 文件,它會(huì)根據(jù)安裝模塊后的 node_modules 目錄結(jié)構(gòu)來(lái)創(chuàng)建;如果已經(jīng)存在 package-lock.json 文件,則它只會(huì)根據(jù) package-lock.json 文件指定的結(jié)構(gòu)來(lái)下載模塊,并不會(huì)理會(huì) package.json 文件。

網(wǎng)上已經(jīng)有很多人反應(yīng)這個(gè)問(wèn)題了:GitHub 上的 issue:package-lock.json file not updated after package.json file is changed

鏈接:https://github.com/npm/npm/issues/16866

clean project with some deps in package.json.you run npm imodules are installed and package-lock.json file is created.say you update module A in package.json file.you run npm i. I would expect this updates the package-lock.json file but it doesn't. which results in module A not being updated.

文章:Understanding lock files in NPM 5

鏈接:http://jpospisil.com/2017/06/02/understanding-lock-files-in-npm-5.html

這里是 npm 文檔關(guān)于 package-locks 的說(shuō)明

鏈接:https://docs.npmjs.com/files/package-locks

目前還不知道關(guān)于 package-lock.json 的最佳實(shí)踐,果斷切換回 Node v6.x,等別人把坑填了再上。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)武林網(wǎng)的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 理塘县| 贵南县| 华亭县| 阿坝县| 双桥区| 绵阳市| 台东市| 沈丘县| 奉化市| 台江县| 镇沅| 雷山县| 清远市| 峨眉山市| 壤塘县| 宜丰县| 宿州市| 余江县| 沽源县| 同德县| 棋牌| 大名县| 德保县| 彰化县| 聊城市| 台东县| 台南市| 绥中县| 北流市| 成都市| 易门县| 新建县| 宣汉县| 当涂县| 湾仔区| 芜湖县| 芜湖县| 齐齐哈尔市| 固始县| 奇台县| 临漳县|