包管理器又称软件包管理系统,它是在电脑中自动安装、配制、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。对于我们业务开发也很受益,相同的东西不必重复去造轮子。
每个工具或者开发工具都有相对应的包管理器,例如Centos的yum,Java的Maven仓库等等。Node.js中目前最出名的包管理器是NPM也是生态最好的。
什么是NPM
NPM是Node.js中的包管理器,允许我们为node.js安装各种管理模块,为我们提供了安装、删除、等其他命令来管理模块;我们要注意的是,我们要有一个package,json文件或node_modules目录安装模块到本地。
NPM最好的一点是他会在本地存储我们开发所需要的依赖项到package.json的dependencies里。
NPM源设置
在国内有时候受限于网络因素的影响,通常在安装一个包管理器之前可以切换为 taobao 源,使得速度可以更快,但是要注意如果是私有模块在 NPM 官方的,则必须切换为官方源,否则会出现 404 错误。
-
查看当前npm源
npm config get registry # http://registry.npmjs.org/ -
切换为 taobao 源
npm config set registry=https://registry.npm.taobao.org -
切换为 npm 官方源
在 npm publish 的时候 需要切换回 npm 源 npm config set registry=http://registry.npmjs.org
在项目中如何应用
-
第一步
在项目根目录中执行 npm init 根据提示输入信息,也可以默认全部回车 npm init -y,会生成一个package.json文件夹{ "name": "test", // 项目名称 "version": "1.0.0",// 版本号 "description": "", // 描述 "main": "index.js", // 入口文件,默认 index.js "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "May", // 作者 "license": "ISC" } -
第二步
安装npm模块,例如安装一个moment时间模块npm install moment -S# ornpm i moment --save如果我们拷贝的项目中已经有package.json模块,我们只需要把依赖的模块下载下来即可
npm install安装成功后,会生成一个新的目录 node_modules 这是用来存放我们所安装的模块,另外 package.json 也会发生变化多了一个 dependencies 对象,这个是用来存储我们的模块版本信息。
NPM注册登录
-
注册
$ npm adduser Username: your name Password: your password Email: your Email -
查看当前使用的用户
npm whoami -
npm 登录
npm login
私有模块
如果是公司团队或者个人项目的私有npm包,进行发布的时候要注意下啦,模块的名字要以 @符号开始、 /符号结束,中间部分为私有包的组织名。例如, @may/logger,may为组织的名称,logger为包名。
{ name: "@may/logger" }
NPM-Module-发布
进入项目根目录,输入命令。
npm publish
NPM发布模块时常见问题
-
question1
no_perms Private mode enable, only admin can publish this module: coorddistance这里注意的是因为国内网络问题,许多小伙伴把npm的镜像代理到淘宝或者别的地方了,这里要设置回原来的镜像。
npm config set registry=http://registry.npmjs.or -
question2
Unexpected end of input at 1:3637 npm ERR! egistry.npmjs.org/mkdirp/-/mkdirp-0.3.2.tgz"},"engines":{"node":"*"}执行命令
npm cache clean--forc -
question3 Node项目部署 私有包报错404 一般两种情况造成:
1、检查服务器是否登录 npm账号
2、执行命令npm configgetregistry检查是否指向https,没有指向https执行命令 npm config set registry=registry.npmjs.org
总结
我们针对NPM做了简单的了解,和模块的开发和上传到npm管理器中。大家可以把常用的组件都打包到一个文件夹中,方便管理和删除。今天的node.js就介绍到这里。