包管理工具深度解析(代码片段)

还是不会呀 还是不会呀     2023-01-05     198

关键词:

包管理工具npm

包管理工具npm:Node Package Manager,Node包管理工具。

在前端项目中也使用npm来管理依赖的包。

npm管理的包查看、搜索:npm官网

项目配置文件package.json

创建package.jsonnpm initnpm init -y


  "name": "learn_npm",
  "version": "1.0.0",
  "private": "true",
  "description": "",
  "main": "index.js",
  "scripts": 
    "test": "echo \\"Error: no test specified\\" && exit 1"
  ,
  "dependencies":,
  "devDependencies":,
  "author": "",
  "license": "ISC"

  • name:项目的名称
  • version:项目的版本
  • description:项目的描述
  • main:项目的入口文件。这个字段主要是用来开发第三方包,给开发者提供的入口。和webpack打包命令的入口并不冲突。
  • scripts:项目的一些脚本命令。其中 test、start、restart、stop编写进入 scripts执行时,可以不加 run
  • author:项目作者的一些信息
  • license:项目遵循的协议
  • private:当值为true时,项目是不可以发布到npm上,这回防止误操作,不小心执行了发布命令。
  • dependencies:项目生产环境依赖的第三方包
  • devDependencies:项目开发环境依赖的第三方包

项目配置文件package-lock.json

package-lock.json内详细记录着安装的第三包的信息(版本,下载路径),以及第三方包之间的依赖关系。

以安装axios为例,对自动生成的这个配置文件进行说明。


  "name": "demo",
  "version": "1.0.0",
  "lockfileVersion": 1,
  "requires": true,
  "dependencies": 
    "axios": 
      "version": "0.21.4",
      "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
      "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
      "requires": 
        "follow-redirects": "^1.14.0"
      
    ,
    "follow-redirects": 
      "version": "1.14.4",
      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz",
      "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g=="
    
  

  • name:项目的名称
  • version:项目的版本
  • requires:以requires这个方式管理第三方包的依赖关系,在axios依赖的包内就存在这个字段
  • dependencies:安装的第三方包的具体信息,和依赖关系

版本管理规范

package.jsondependenciesdevDependencies中,第三方包的版本会出现^~的符号。

package.json内的第三方包不会记录具体的安装版本,具体的安装版本在 package-lock.json中。

npm的包遵循 :semver版本规范

简要说明semver规范:x.y.z

  • x主版本号:重大升级
  • y次版本号:增加了一些向下兼容的新特性
  • z修订号:问题bug的修复

^~的区别

  • ^x.y.z:x保持不变,y和z永远安装最新版本
  • ~x.y.z:x和y保持不变,z永远安装最新版本

npm常用命令

命令中的 install是可以简写成i的.

<package>的意思代表着 要安装的包名.

安装命令

  • 全局安装:npm install <package> -g

  • 局部安装:npm install <package>

  • 重新安装项目的全部依赖:npm install根据package.json来构建。

局部安装的分类

  • 开发依赖:npm install <package> --save-devnpm install <package> -Dnpm i <package> -D

  • 生产依赖:npm install <package>npm i <package>

卸载命令

npm uninstall <package>npm uninstall <package> --save-devnpm uninstall <package> -D

强制重新buildnpm rebuild

清除缓存npm cache clean

查看缓存位置npm config get cache

npm install 原理(非常重要)

🚩

局部命令执行方案

方案一

明确找到node_modules下的.bin下的包。

局部webpack的版本:./node_modules/.bin/webpack --version

方案二

通过在scripts内定义脚本命令。

"scripts": 
    "test": "echo \\"Error: no test specified\\" && exit 1",
    "webpack":"webpack --version"
  ,
npm run webpack

方案三

使用npx工具,npx直接在 node_modules下的.bin下查找对应命令

npx webpack --version

python的版本包库包管理器虚拟环境开发工具等概念(代码片段)

一些概念Python虚拟环境,涉及到很多概念和工具,会对使用造成困扰和障碍,所以我们先了解一些概念和与之相关的工具python版本Python版本指的是Python解析器本身的版本。由于Python3不能与Python2兼容,而且两大阵... 查看详情

flink状态管理详解:keyedstate和operatorliststate深度解析(代码片段)

为什么要管理状态有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要记录状态,然后在新流入数据的基础上不断更新状态。下面的几个场景都需要使用流处理的状态功能:数据流中的数据有重复,我... 查看详情

python包管理工具pip的使用(代码片段)

1、pip版本管理#pip更新到最新版本python-mpipinstall--upgradepip#查看pip版本pipshowpippip--version#查看python版本cmd直接输入python2、pip包管理#安装包pipinstallxxxpipinstallSomePackage==1.0.4#指定版本#升级包,可以使用-U或者--upgradep 查看详情

python应用实战案例-pythongeopandas包详解(附大量案例及代码)(代码片段)

...智能&算法研究类精品专栏,喜欢的小伙伴自行下载。深度学习100例全系列详细教程 深度学习算法原理介绍及应用案例tensorflow从入门到精通100讲 深度学习框架TensorFlow的应用案例手把手教你ML机器学习算法源码全解析&nb... 查看详情

go官方包依赖管理工具之mod(代码片段)

...gomod是什么gomod是Golang1.11版本引入的官方包(package)依赖管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。之前Golang主要依靠vendor和GOPATH来管理依赖库,vendor相对主流,但现在官方更提倡gomod。1... 查看详情

golang包管理工具之govendor的使用(代码片段)

.../govendor,会将依赖包下载到GOPATH的路径下。常用的依赖包管理工具有godep,govendor等,在Golang1.5之后,Go提供了 GO15VENDOREXPERIMENT 环境变量(Go1.6版本默认开启该环境变量),用于将g 查看详情

python包管理工具pip(代码片段)

一:简介pip是一个现代的,通用的Python包管理工具。提供了对Python包的查找、下载、安装、卸载的功能。二:命令命令描述help帮助显示命令的帮助(Showhelpforcommands.)config配置本地和全局变量(常用配置仓... 查看详情

一文弄懂npm&yarn包管理机制(深度解析!)

背景使用npm或yarn管理项目依赖时,可能会产生以下疑问:项目依赖出现问题怎么办?删了重装,即先删除node_modules再重新install,那这样的操作会不会存在风险?把所有依赖都安装到dependencies中,不区... 查看详情

maven管理工具(代码片段)

Maven解决的问题:1.使用maven前搭建项目需要引入各种jar包,并且还可能有jar包冲突的问题解决jar包冲突的方式:1.第一声明优先原则2.路径近者优先原则.直接依赖路径比传递依赖路径近.直接依赖:项目中直接导入的jar包,就是该项目的... 查看详情

软件包管理rpm(代码片段)

包和包管理器包的组成:二进制文件、库文件、配置文件、帮助文件程序包管理器:  debian: deb文件,dpkg包管理器  redhat: rpm文件,rpm包管理器  rpm:  RedhatPackageManager     &ems... 查看详情

installingchocolatey(代码片段)

使用包管理工具(PackageManager)去管理这些软件,这里说的是操作系统级别的包管理工具,也就是管理想要安装到操作系统上的软件的工具。这是相对于项目级别的包管理,比如前端项目用的Bower,还有管理NodeJS包的npm而言的。... 查看详情

工具安装-centos-安装python包管理工具pip(代码片段)

   pip是python的包管理工具,pip库中自带了很多python的开源工具包,在使用的时候直接运行pipinstall就可以下载并安装注册到python模块内,下文将会讨论centos中如何安装pip。一、安装pip命令  下载pip安装包:[root... 查看详情

linux企业运维——kubernetes(十八)helm包管理工具(代码片段)

Linux企业运维——Kubernetes(十八)Helm包管理工具文章目录Linux企业运维——Kubernetes(十八)Helm包管理工具一、Helm简介二、Helm安装部署三、使用Helm部署redis四、构建HelmChart五、Helm部署nfs-client-provisioner六、Helm部署... 查看详情

nodejs基础之包管理工具npm(代码片段)

✍🔥Nodejs冲浪笔记地址🔥Nodejs基础之JavaScript模块化(一)https://blog.csdn.net/Augenstern_QXL/article/details/119941988🔥nodejs基础之包管理工具npm(二)https://blog.csdn.net/Augenstern_QXL/article/details/ 查看详情

linux企业运维——kubernetes(十八)helm包管理工具(代码片段)

Linux企业运维——Kubernetes(十八)Helm包管理工具文章目录Linux企业运维——Kubernetes(十八)Helm包管理工具1、Helm简介2、Helm安装部署3、使用Helm部署redis4、构建HelmChart5、Helm部署nfs-client-provisioner6、Helm部署metrics-serv... 查看详情

使用helm包管理工具简化kubernetes应用部署(代码片段)

...我们可以使用Helm来简化这些工作。Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理。部署Helm客户端与服务端部署客户端在github上HelmRealese下载最新的二进制文件$tar-zxvfhelm-v2.11.0-linux-amd 查看详情

(翻译)60分钟入门深度学习工具-pytorch(代码片段)

60分钟入门深度学习工具-PyTorch作者:SoumithChintala原文翻译自:一、Pytorch是什么?二、AUTOGRAD三、神经网络四、训练一个分类器五、数据并行他是一个基于Python的科学计算包,目标用户有两类为了使用GPU来替代numpy一个深度学习研... 查看详情

cgetcmake包管理工具(代码片段)

cget是一个方便的进行cmake包下载以及安装的工具包含的特性非侵入,无需编写特殊钩子就可以使用cmake开箱即用,由于使用了标准的基于cmake的方式,直接可以使用基于cmkae的软件包去中心,我们可以使用github、git、url,本地文件... 查看详情