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

首頁 > 語言 > JavaScript > 正文

簡單談談關于 npm 5.0 的新坑

2024-05-06 15:16:10
字體:
來源:轉載
供稿:網友

前言

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

先不要激動,現在我來大概講一下 npm 5 的一些大的變化:

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

重新安裝模塊之所以快,是因為 package-lock.json 文件中已經記錄了整個 node_modules 文件夾的樹狀結構,甚至連模塊的下載地址都記錄了,再重新安裝的時候只需要直接下載文件即可(這樣看起來 facebook 的 yarn 好像沒有啥優勢了)。

以下是 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=" } }}

帶來速度的同時,npm 也挖了個大大的坑:

以后直接改 package.json 文件相應模塊的版本號,再執行npm install不會更新了(好可怕),你只能手動用npm install xxx@yy指定版本號來安裝,然后它會自動更新 package-lock.json 文件。直接執行npm install時,如果不存在 package-lock.json 文件,它會根據安裝模塊后的 node_modules 目錄結構來創建;如果已經存在 package-lock.json 文件,則它只會根據 package-lock.json 文件指定的結構來下載模塊,并不會理會 package.json 文件。

網上已經有很多人反應這個問題了: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.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 敦煌市| 阳曲县| 随州市| 全州县| 白城市| 斗六市| 上犹县| 修文县| 博客| 奈曼旗| 建瓯市| 鹿邑县| 山丹县| 万全县| 城市| 芷江| 莫力| 临夏市| 池州市| 鄂托克前旗| 城口县| 平顶山市| 松滋市| 宜兰市| 集贤县| 略阳县| 雷山县| 黄石市| 桐梓县| 临沧市| 华宁县| 滁州市| 张北县| 牙克石市| 景东| 阿图什市| 瓦房店市| 东丽区| 河池市| 竹溪县| 永寿县|