从零开始学Node.js(二、NPM包管理器)

930 阅读3分钟

包管理器又称软件包管理系统,它是在电脑中自动安装、配制、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。对于我们业务开发也很受益,相同的东西不必重复去造轮子。

每个工具或者开发工具都有相对应的包管理器,例如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就介绍到这里。

参考文章

Node.js 包管理器 NPM 讲解