包管理工具深入解析_第1页
包管理工具深入解析_第2页
包管理工具深入解析_第3页
包管理工具深入解析_第4页
包管理工具深入解析_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

n我们已经学习了在JavaScriptpp这个工具我们可以让同事通过导入的方式来使用,甚至你可以给世界各地的程序员来使用n如果我们给世界上所有的程序员使用,有哪些方式呢p缺点是大家必须知道你的代码的地址,并且从上手动;p需要在自己的项目中手动的,并且管理相关的依赖;pppnpp包管理工具nn包管理工具pNodePackageManager,也就是Nodep但是目前已经不仅仅是Node包管理器了,端项目中我们也在使用它来管理依赖的包p比如express、koa、react、react-dom、axios、babel、wck等等nnpmp p这是我们安装相关的npmnnpmp我们发布自己的包其实是发布到registryp当我们安装一个包时其实是从registry上面的包nppn这个配置文件在Node环境下面(无论是前端还是后端)就是n我们这里来看几个例子:pnpminity创建的

npminitnpminityn必须填写的属性:name、pname是项目的名称pversionpdescriptionpauthor是作者相关信息(发布时用到plicense是开源协议(发布时用到nprivatepprivatep当值为true时,npmnmainp设置程序的p很多人会有疑惑,wck不是会自动找到程序的吗ü这个和wck打包的并不üü比如我们使用axios模块constaxios=ü实际上是找到对应的mainnscripts属pscripts属性用于配置一些命令,以键值对的形式存在;p配置后我们可以通过npmrun命令的key来执行这个命令;pnpmstart和npmrunstart的区别是什么?üü对于常用的start、test、stop、restart可以省略掉run直接通过npmstartndependenciespdependenciespp与之对应的是ndevDependenciesp一些包在生成环境是不需要的,比如

npminstallproductionp这个时候我们会通过npminstall ck--save-dev,将它安装到devDependencies属性中n我们会发现安装的依赖版本出现:^2.0.3或~2.0.3nnpm的包通常需要遵从semver版p pnpm nsemver版是pX主版本号(major):当你做了不兼容的API修改(可能不兼容之前的版本pY次版本号(minor):当你做了向下兼容的功能性新增(新功能增加,但是兼容之前的版本pZ修订号(patch):当你做了向下兼容的问题修正(没有新功能,修复了之前版本的n我们这里解释一下^和~p^x.y.z:表示x是保持不变的,y和z安装的版本p~x.y.z:表示x和y保持不变的,z安装的版本nenginespengines属性用于指定Node和NPMpp事实上也可以指定所在的操作系统"os":["darwin","linux"nbrowserslistp用于配置打包后的JavaScriptp否则我们需要手动的添加polyfillsp也就是说它是为wck等打包工具服务的一个属性(这里不是详细讲解wck等工具的工作原理,所以npminstalln安装npmp全局安装(globalinstall):npminstallyarn-p项目(局部)安装(localinstall):npmn全局安pp比如yarn的全局安装npminstallyarn-np通常使用npm全局安装的包都是一些工具包:yarn、wck等p并不是类似于axios、express、koap所以全局安装了之后并不能让我们在所有的项目中使用axiosn项目安装会在当前 下生产一个node_modules文件夹,我们之前讲解require查找顺序时有讲解过这个包在什nnpmnpminpmwnpmnpmiwwck根据package.jsonnpmnpminstalln很多同学之前应该已经会了npminstall<packagep执行npminstallp我们会发现还有一个成为package-lock.jsonp从npm5开始,npm支持缓存策略(来自yarn的压力),n这是一幅我画出的根据npminstall的原理图:npminstallnnpminstall会检测是有package-lock.jsonp没有lock文üü从registry仓库中压缩包(如果我们设置了镜像,那么会从镜像服务器压缩包ü获取到压缩包后会对压缩包进行缓存(从npm5开始有的ü将压缩包解压到项目的node_modules文件夹中(前面我们讲过,require的查找顺序会在该包下面查找p有lock文ü检测lock中包的版本是否和package.json中一致(会按照semver版检测ØüØ没有找到,会从registry仓库,直接走顶层流程ü查找到,会获取缓存中的压缩文件,并且将压缩文件解压到node_modulesnpackage-lock.jsonnnamenversionnlockfileVersion:locknrequires:使用requiresndependencies üversion表示实际安装的axiosüresolved用来记录的地址,registry仓库ürequiresüintegrity用来从缓存中获取索引,再通过索引npm其nnn强制重新npmn清除缓npmcachennpm令其实是非常多的p 令,可以根据需要查阅文n另一个node包管理工具pyarn是 、、Exponent和Tilde联合推出了一个新的JS包管理工具pyarn是为了弥补npmp早期的npm存在很多的缺陷,比如安装依赖速度很慢、版本依赖等等一系列的问题p虽然从npm5版本开始,进行了很多的升级和改进,但是依然很多人喜欢使用cnpmn由于一些特殊的原因,某些情况下我们没办法很好的从下来一些需要的包n查看npmnpmconfiggetregistry#npmconfiggetn我们可以直接设置npmnpmconfigsetregistryn但是对于大多数人来说(比如我),并不希望将npmp第一,不太希望随意修改npm原本从下来包的p第二,担心某天淘宝的镜像挂了或者不了,又要改来改去n这个时候,我们可以使用cnpm,并且将cnpmnpminstall-gcnpm--registry=cnpmconfiggetregistry#nnpx是npm5.2pnpxn我们以wck为例p全局安装的是wp项目安装的是wn如果我在终端执行wck--version使用的是哪一个命令呢p显示结果会是wck5.1.3,事实上使用的是全局的,为什么呢p原因非常简单,在当 nn那么如何使用项目(局部)的wck,常见的是两种方式p方式一:明确查找到node_module下面

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论