当前位置: 首页 > 后端技术 > Node.js

Node.js包管理器NPM解释

时间:2023-04-03 14:57:19 Node.js

包管理器,又称包管理系统,是在计算机中自动安装、准备、卸载和升级软件包的工具组合,用于安装各种系统软件和应用软件广泛应用于管理中。对我们的业务发展也非常有利,同样的事情不必重复造轮子。每一种工具或者开发语言都有对应的包管理器,比如Ubuntu的apt-get、Centos的yum、Java的Mavenrepository等等。目前Node.js中最著名的包管理器是NPM,也是生态最好的。什么是NPM?NPM是Node.js中的包管理器。允许我们为Node.js安装各种模块,这个包管理器为我们提供了安装、删除和其他管理模块的命令。这里我们需要注意的一件事是,我们必须有一个package.json文件或一个node_modules目录才能在本地安装模块。NPM最好的事情之一是它在本地存储我们安装的依赖项,在package.json的依赖项对象中。例如,如果模块X使用模块A1.0版,模块Y使用模块A1.5版,则模块X或Y都将在本地拥有自己的模块A副本。//模块X{"name":"X","dependencies":{"A":"^1.0"}}//模块Y{"name":"Y","dependencies":{"A":"^1.5"}}我什么时候需要NPM包?我们在开发一些Node.js项目的时候,可能会遇到一些需要NPM的地方,比如链接Redis、MongoDB或者发送请求等,有了这些已有的模块,我们就可以更专注于业务开发。当然,有时候你会为了一些特殊的需求,你可能需要自己打包一个npm模块来实现模块复用和资源共享。NPM安装NPM不需要单独安装。我们在安装Node.js环境的时候,也安装了NPM。还没有搭建Node.js环境的同学可以参考“3N兄弟”章节帮你完成Node.js环境搭建。在终端执行npm-v命令查看当前npm版本$npm-v5.6.0NPM源设置在国内有时会受到网络因素的限制。通常可以在安装包管理器之前先切换到淘宝源,这样速度会快一些,但是注意如果npm中的私有模块是官方的,一定要切换到官方源,否则会出现404错误。查看当前npm源npmconfiggetregistry#http://registry.npmjs.org/切换到淘宝源npmconfigsetregistry=https://registry.npm.taobao.org切换到npm官方源npm发布时需要切换回到npm源码npmconfigsetregistry=http://registry.npmjs.org如何在项目中应用我们来新建一个项目test,一开始是一个空文件夹第一步是执行npminitin在控制台按照提示输入信息,会生成一个package.json文件,如下:{"name":"test",//项目名"version":"1.0.0",//版本号"description":"",//描述"main":"index.js",//入口文件,默认index.js"scripts":{"test":"echo\"Error:notestspecified\"&&exit1"},"author":"May",//Author"license":"ISC"}第二步是安装npm模块。比如我们安装一个moment模块格式化时间,执行如下命令npminstallmoment-S#或者npmimoment--save安装成功后会生成一个新的目录node_modules,用来存放我们安装的模块。另外,package.json也会变化,增加一个dependencies对象,用来存放我们模块的版本信息。"dependencies":{"moment":"^2.24.0"}查看我们当前的目录结构:NPMRegisterLoginRegister$npmadduserUsername:你的名字Password:你的密码Email:(thisISpublic)youremail查看当前用户npmwhoaminpmloginnpmlogin如果私有模块是公司团队或个人项目的私有npm包,发布时要注意。模块名称以@符号开头,/符号结尾,中间部分为私有包的组织名。比如@may/logger,may是组织名,logger是包名。package.json{"name":"@may/logger"}NPM-Module-Publish进入项目根目录,输入命令。npmpublish常见问题Questions1no_permsprivatemodeenable,只有admin可以发布这个模块:coorddistance这里注意,由于国内网络问题,很多小伙伴把npm镜像代理到了淘宝或者其他地方,这里需要重新设置到原始图像。npmconfigsetregistry=http://registry.npmjs.orgQuestions2输入意外结束于1:3637npmERR!egistry.npmjs.org/mkdirp/-/mkdirp-0.3.2.tgz"},"engines":{"node":"*"}执行命令npmcacheclean--forceQuestions3Node项目部署私有包错误404一般导致分两种情况:检查服务器是否登录了npm账号执行命令npmconfiggetregistry检查是否指向https,如果没有指向https执行命令npmconfigsetregistry=https://registry.npmjs.org