| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> package.json 与 package-lock.json 的关系 -> 正文阅读 |
|
[JavaScript知识库]package.json 与 package-lock.json 的关系 |
模块化开发在前端越来越流行,使用 node 和 npm 可以很方便的下载管理项目所需的依赖模块。 那 package.json管理包大家都知道, 通过 npm 管理,使用一些简单的命令,自动生成 语义版本控制首先我们先来了解下依赖包的版本号的定义 版本号由三部分组成: 例如:1.2.3,主要版本1,次要版本2,补丁3。
安装依赖包的版本如何指定相信大家都会经历过,我们安装一些依赖包的时候,版本号前面都会带
那么该如何选择呢?当然你可以 但是需要注意 ^ 版本更新可能比较大,会造成项目代码错误,所以 建议使用 版本号写 *,这意味着安装最新版本的依赖包,但缺点同上,可能会造成版本不兼容,慎用! 多人开发时依赖包安装的问题看了上面版本号的指定后,我们可以知道,当我们使用了 我们举个例子: 假设我们中安装了 大家思考思考,这样的话,不同人电脑安装的依赖版项目,是不是都有可能不一样,就会导致每个人电脑运行的应用程序产生不同的结果。就会存在bug的隐患。 这时也许有同学想到,那么我们在 这个想法固然是不错的,但是你只能控制你自己的项目锁死版本号,那你项目中依赖包的依赖包呢?你怎么控制限制别人锁死版本号呢? 为了解决这个不同人电脑安装的所有依赖版本都是一致的,确保项目代码在安装所执行的运行结果都一样,这时 package-lock.jsonpackage-lock.json 是在 npm(^5.x.x.x)后才有,中途有几次更改 介绍官方文档是这样解释的: 它的产生就是来对整个依赖树进行版本固定的(锁死)。 当我们在一个项目中 当我们下次再
package-lock.json 生成逻辑简单描述一下
在这种情况下
如果后续无论是直接依赖的 A 发版,或者间接依赖的B, C 发版,只要我们不动 A 发布了新版本 1.1.0,虽然我们 package.json 写的是 ^1.0.0 但是因为 我们可以手动运行 npm i A@1.1.0 来实现升级。 因为 1.1.0 B 发布了新版本 1.0.1, 1.0.2, 1.1.0, 此刻如果我们不做操作是不会自动升级 B 的版本的,但如果此刻 A 发布了 1.1.1,虽然并没有升级 B 的依赖,但是如果我们项目里升级 A@1.1.1,此时 经过这些操作后 项目 lock-test 的 package.json 变成
对应的
这个时候我们将 B 加入我们 lock-test 项目的依赖, B@^1.0.0,package.json如下
我们执行这个操作后, 但是如果我们将 B 的版本固定到 2.x 版本,
因为存在了两个冲突的B版本,
因为 B 的版本出现了冲突,npm 使用嵌套描述了这种行为 我们实际开发中并不需要关注这种生成的算法逻辑,我们只需要了解, package-lock.json 可能被意外更改的原因
将部分包的位置从 dependencies 移动到 devDependencies 这种操作,虽然包未变,但是也会影响
经过实际使用发现,如果我们 node_modules 文件夹下的包中下载时,就算版本一样,安装源 可能还存在其他的原因,但是 开发的建议一般情况下 但是为了防止出现刚刚提到的意外情况,除非涉及到对包的调整,其他情况下建议使用 持续集成工具中更推荐是用 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 1:14:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |