npm怎么修改packagelock文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了npm怎么修改packagelock文件相关的知识,希望对你有一定的参考价值。
npm怎么修改packagelock文件删除package-lock.json,重新npm install,node_modules中出现了stylus文件夹了,然而还是报错。
2、在终端直接运行 sudo npm install stylus-loader stylus --save-dev 结果就编译成功了、
补充:
1、这个package-lock.json 是npm 5 做的一个优化,加快了npm 下载的速度。条件就是将依赖的详细信息,包括版本,下载地址等,都写在了里面。然后想要更新版本的话,就不能够去通过修改package 里面的版本依赖来实现了,只能通过npm install packageName@version 来实现。
背景如下:
1、npm目前升级到了5.0.3
npm install的时候目录会多一个package-lock.json这个文件
此时我在package.json的devDependencies中添加了
2、"stylus": "^0.54.5","stylus-loader": "^3.0.1"
3、然后在终端重新运行npm install的时候,项目中的node_modules并没有出现stylus文件夹
查了下资料说是新版本的坑
背景如下:
1、npm目前升级到了5.0.3
npm install的时候目录会多一个package-lock.json这个文件
此时我在package.json的devDependencies中添加了
2、"stylus": "^0.54.5","stylus-loader": "^3.0.1"
3、然后在终端重新运行npm install的时候,项目中的node_modules并没有出现stylus文件夹是新版本的坑。 参考技术A 版本号由三部分组成:major.minor.patch,主版本号.次版本号.修补版本号。
相信大家都会经历过,我们安装一些依赖包的时候,版本号前面都会带 ^ 或者 ~ 的符号,这两个符号代表什么意思呢?
~ 会匹配最新的小版本依赖包,比如 ~1.2.3 会匹配所有 1.2.x 版本,但是不包括 1.3.0
^ 会匹配最新的大版本依赖包,比如 ^1.2.3 会匹配所有 1.x.x 的包,包括 1.3.0,但是不包括 2.0.0
* 安装最新版本的依赖包,比如 *1.2.3 会匹配 x.x.x,
使用
1.直接指定版本号:eg:1.2.3 这样写没什么问题,但是如果依赖包发布了修补版本
如:现在依赖包有一个bug,在1.2.4版本中修复了,此时我们要升级,需要手动修改package.json中得版本号,很麻烦
2.使用~,^,* 可以解决手动修改package.json版本号得问题
但是这里要注意:一般推荐使用~来指定版本,因为~一般是针对小的bug提交的版本,对我们的使用没有影响;
如果我们使用^或*,这两种都都是大版本的迭代,可以是依赖包的功能修改,这时候,我们还是按照之前的用法去使用,我们的项目可能会出现错误。
问题
当多人开发的时候,不管使用~/^/* ,每个人安装的依赖包就会有差异。一旦有差异就会出现项目运行结果不一致。
这里看一下iview的更新日志说明一下
使用~的依赖包为什么会不一样?
因为:比如:~1.2.3 一个月前,这个依赖包的最新版本是1.2.5,一个月前我安装的版本就是1.2.5 ; 过了几个月新来了一个小伙伴,此时这个依赖包版本更新了 是1.2.9,此时这个小伙伴安装的就是1.2.9。这个时候我们俩个就会安装不同的版本。更何况我们使用^或*的时候。由于版本差异,是不是会存在bug的隐患。
这时候,有的同学会想,我们直接锁死版本是不是就解决了。确实,我们直接将上面的版本锁死:1.2.3;这是确实所有人都是一样的版本。这个想法固然是不错的,但是你只能控制你自己的项目锁死版本号,那你项目中依赖包的依赖包呢?你怎么控制限制别人锁死版本号呢?
此时package-lock.json就应运而生。
package-lock.json
package-lock.json 是在 npm(^5.x.x.x)后才有,中途有几次更改。
它的产生就是来对整个依赖树进行版本固定的(锁死)。
我们可以随便找个项目看看
产生:
当我们在一个项目中npm install时候,会自动生成一个package-lock.json文件,和package.json在同一级目录下。package-lock.json记录了项目的一些信息和所依赖的模块。这样在每次安装都会出现相同的结果. 不管你在什么机器上面或什么时候安装。
当我们下次再npm install时候,npm 发现如果项目中有 package-lock.json 文件,会根据 package-lock.json 里的内容来处理和安装依赖而不再根据 package.json。
实际操作一下:
npm init
npm i --save axios
后面其他的小伙伴在安装依赖的时候,就会根据package-lock.json文件中的依赖包版本来安装。
问题
如果依赖包实在有bug,我们需要升级依赖包,此时我们只需要修改package.json依赖包的版本,只要package.json和package-lock.json中版本不一致,就会重新生产一个package-lock.json。这样就达到了升级依赖包版本的目的
npm i axios@5.3.5
到这里大家是不是对这两个json文件有了新的认识,有什么疑问欢迎大家评论留言。
更多学习视频学习资料请参考:B站搜索“我们一起学前端” 参考技术B .package-lock.json包管理配置文件,是npm官方规定的必须提供的,用来记录与项目有关的一些配置的信息。
项目的名称、版本号、描述——基本信息
项目中都用到了哪些包
哪些包在开发期间会用到——包进行分类
哪些包在开发和部署时候会用到
多人协作的问题:(实际开发中使用github开发)
会出现这种情况:整个项目的体积是30M 第三方包即node_modules文件夹的体积是28M,所以我们项目源代码才2M——第三方包的体积过大不方便成员之间共享项目源代码
解决方案:共享时候剔除包
但是其他人不知道你用了什么包,如何才能启动你的源代码呢
(记录项目中安装了哪些包)解决方案: 在项目根目录中,创建一个package.json配置文件。即可用来记录项目中安装了哪些包,从而方便在我们剔除node_modules目录之后。在团队成员之间共享项目源代码。-------------------根据这个安装包
如何快速创建package.json包管理配置文件呢:npm包管理工具提供了一个快捷命令
npm init -y ——在执行命令所处的目录中,快速新建package.json文件(在项目开发期间只需要创建一次。在项目根目录进行创建)
以上是关于npm怎么修改packagelock文件的主要内容,如果未能解决你的问题,请参考以下文章
ENOLOCK npm 错误!运行 npm audit fix 时出错
Error:npm WARN enoent ENOENT: no such file or directory, open ‘C:UsersXXpackage.json‘son‘