npm 5.0 学习中遇到的坑
- 更新时间:2020-04-06 10:58:42
- 编辑:郜翔宇
前言
前几天升级了 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.
文章:Understanding lock files in NPM 5
链接:http://jpospisil.com/2017/06/02/understanding-lock-files-in-npm-5.html
这里是 npm 文档关于 package-locks 的说明
链接:https://docs.npmjs.com/files/package-locks
目前还不知道关于 package-lock.json 的最佳实践,果断切换回 Node v6.x,等别人把坑填了再上。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对码农之家的支持。
相关教程
-
解决NodeJs安装npm包一直失败的方法步骤
本篇文章主要介绍了NodeJs安装npm包一直失败的解决方法。具有很好的参考价值。下面跟着小编一起来看下吧
发布时间:2019-11-04
-
新时期的Node.js入门
Node.js是一门开源的、为Web而生的语言,具有高并发、异步等特点,并且拥有一个十分活跃的开发者社区。与Ruby、Python等语言相比,Node.js更年轻、更易于没有经验的人上手使用,因此很快在世界各地的开发者中收获了一大批拥趸。
大小:34.8 MBnodejs电子书
-
深入浅出Node.js
这书从不一样的角度介绍了Node本质的特性和构造。由首章Node介绍为数据库索引,涉及到Node的各个方面,主题思想包括控制模块体制的揭示、多线程I/O保持原理的呈现、多线程编写程序的讨论
大小:19.3 MBNode.js电子书
-
Node.js微服务
Node.js微服务 对如何采用Node.js及其生态工具进行微服务开发的*实践做了全面的介绍,内容包括对微服务架构基本概念及设计原则的讲解,以及如何采用Node.js搭配Seneca、PM2和Docker等现代化工具来
大小:15.3 MB微服务电子书
-
Koa与Node.js开发实战
基于Node.js平台的新一代Web开发框架Koa2,搭建真实线上实战项目,配套免费在线音视频Koa2教程,与微信小程序前后端搭配,全面掌握潮流技术
大小:190.6 MBWeb开发电子书
-
Node.js in action
大小:191 MBNode.js电子书
-
Node.js区块链开发
这是一本基于一个实际运行的区块链产品,也是开源产品的实践书籍,从代码层面深度完整讲述区块链开发的书籍,通过工程思维,讲解工程实践,真正体现编程技术的工具价值,欢迎下载阅读
大小:23.9 MBNode.js电子书
-
Node.js硬实战:115个核心技巧
《 Node.js 硬实战:115 个核心技巧 》是一本面向实战的Node.js教程进阶指南。作为资深专家,《Node.js 硬实战:115 个核心技巧》作者独辟蹊径,将着眼点放在Node.js 的核心模块和网络应用,通过精
大小:212 MBNode.js电子书
-
Node.js项目实践:构建可扩展的Web应用
《Node.js项目实践:构建可扩展的Web应用》 用专业的讲解方式,带领读者从Hello World示例开始,一步步将其构建成有实际用途的Node.js应用。《Node.js项目实践:构建可扩展的Web应用》涉及许多组
大小:55.6 MBNode.js电子书
-
Node.js实战
《Node.js实战(第2季)》作者来自CNode社区点击率颇高、粉丝数万的《一起学node.js》。《Node.js实战(第2季)》没有成为教条式的入门级别,而是真正进入Node.js实战层次。
大小:6.25 MB电子书