首页 > 其他分享 >npm学习(十一)之package-lock.json

npm学习(十一)之package-lock.json

时间:2023-11-28 12:34:11浏览次数:31  
标签:npm node package lock 生成 json

 

 

package-lock.json

描述

对于npm修改node_modules树或package.json的任何操作,都会自动生成package-lock.json,它描述生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何

此文件拟提交至来源资料库,并可作以下用途:

  • 描述依赖关系树的单一表示形式,以确保队友、部署和持续集成能够安装完全相同的依赖关系。
  • 为用户提供一种工具,让他们可以“穿越”到node_modules以前的状态,而不必提交目录本身。
  • 通过可读的源代码控制差异,提高树更改的可视性。
  • 并通过允许npm跳过先前安装包的重复元数据解析来优化安装过程。

关于package-lock.json的一个关键细节是它是不能发布的,如果在除toplevel包之外的任何地方发现它,它将被忽略。它与npm-shrinkwrap.json共享一种格式,本质上是相同的文件,但允许发布。除非部署CLI工具或使用发布过程来生成生产包,否则不建议这样做。

如果package-lock.json和npm-shrinkwrap.json存在于包的根目录中,package-lock.json将完全被忽略。

生成(2020-12-17)

拿到项目后,执行npm install根据package.json生成node_modules文件

后续需要安装其他包的时候

执行npm install xxx 生成package-lock.json文件

  • 安装模块操作(更新node_moudles文件夹的内容)会自动生成和更新package-lock.json文件

如果删除node_modules再次执行npm install,会根据package-lock.json下载模块

文件格式

name(名字)

package-lock.json中包的名字必须匹配package.json中的内容。

version(版本)

这是程序包锁定的程序包版本。这必须与package.json中的内容匹配。

lockfileVersion

整数版本,从1开始,该文档的版本号为1,在生成这个package-lock.json时使用了该文档的语义。

packageIntegrity

这是从package.json中创建的子资源完整性值。不应该对package.json进行预处理。子资源完整性字符串可以由ssri之类的模块生成。

preserveSymlinks

指示安装完成时启用了环境变量NODE_PRESERVE_SYMLINKS。安装程序应该坚持此属性的值与环境变量匹配。

dependencies(依赖关系)

包名到依赖项对象的映射。依赖对象具有以下属性:

  • version:版本
  • integrity:这是该资源的标准子资源完整性

  • resolved:来源

  • bundled

  • dev

  • optional:可选依赖项

  • requires:依赖包

package-lock.json的作用

package-lock.json和package.json的作用

参考

npm package-lock.json

标签:npm,node,package,lock,生成,json
From: https://www.cnblogs.com/onesea/p/17861648.html

相关文章

  • npm学习(十)之如何使用创建、发布、使用作用域包
      前言要求npm版本2或更高作用域用于将相关包分组在一起,并为npm模块创建一个名称空间(类似于域)。这里有更详细的解释。如果一个包的名称以@开头,那么它就是一个有作用域的包。范围是@和斜杠之间的所有内容。@scope/project-name每个npm用户都有自己的范围。@userna......
  • npm学习(九)之README.md文件
      包括文档(readme.md)npm建议您包含一个readme文件来记录您的包。自述文件必须有文件名readme.md。文件扩展名.md表示该文件是一个标记(markdown)文件。当有人发现您的包时,该文件将出现在npm网站上。在开始之前,请查看一些包页面,了解可以添加到readme文件中的信息,并了解为......
  • npm学习(八)之更新发布包时如何使用语义化版本
      npm的语义化版本控制——Semanticversioning在新发布的代码中传达更改的程度非常重要,因为有时更新会破坏包需要的代码(称为依赖项)。语义化版本控制(semver)是一个旨在解决这个问题的标准。Semver出版商如果一个项目要与其他项目共享,那么它应该从1.0.0开始(尽管npm上......
  • npm学习(十七)之node_modules中的bin文件夹
      可执行文件在本地模式下,可执行文件指向的位置;./node_modules/.bin 以便可以通过npm运行的脚本使用它们。例如,当您运行测试,将在路径中 npmtest。npm为script字段中的脚本路径都加上了node_moudles/.bin前缀npm为script字段中的脚本路径都加上了node_moud......
  • BlockUI专栏目录
    文章作者:里海简介:        BlockUI是一个设计NX对话框的工具,是官方推荐使用的对话框制作方法,能够与NX自身风格相统一,并且在实际开发中经常被使用。        BlockUI可以帮助用户快速创建NX对话框,支持多种控件类型,如按钮、文本框、标签等。通过使用BlockUI,用户可以轻......
  • C++标准库类std::packaged_task
    std::packaged_task是C++11引入的标准库类,用于封装可调用对象,如函数等,并将封装对象作为异步任务进行管理,通过与std::future结合使用,完成异步任务结果的获取。#include<iostream>#include<thread>#include<future>std::stringpromise_string(std::stringstr){......
  • jpackage与jlink等编译打包工具
    jpackage与jlink等编译打包工具都位于jdk/bin目录下,可以通过命令终端直接执行也可通过idea直接调用。如果配置了环境变量就可以通过终端直接执行.1、查看版本号:PSC:\Users\Administrator\Desktop>jpackage--version  21.0.1PSC:\Users\Administrator\Deskt......
  • npm下载node-sass包安装失败,需要下python2?
    问题这个问题真的老问题了,今天在跑一个老项目的时候又遇到了。每次遇到都会感慨,这个包真的是是非多啊,解决方案也很简单,不用下python环境,单纯是版本问题查了下网上有挺好的一篇博客:http://www.inspinia.net/a/388314.html?action=onClick里面的报错跟我的一模一样:解决方案......
  • No package 'glib-2.0' found
     001、./configure命令报错如下: Nopackage'glib-2.0'found 002、查找改文件[[email protected]]#find/-name"glib-2.0.pc"##只在conda环境中存在/root/anaconda3/pkgs/glib-2.69.1-he621ea3_2/lib/pkgconfig/glib-2.0.pc/root/anaconda3/li......
  • centos安装npm
    1.更新系统:在开始安装之前,先确保你的系统已更新到最新状态。运行以下命令来更新系统:$sudoyumupdate 2.安装Node.js和npm:CentOS7中可以使用yum安装Node.js,但默认仓库版本可能较旧。建议使用Node.js官方源来安装较新的版本。以下是从Node.js官方源安装的步骤:安装cur......