npm(node包管理器)


npm

概述

  • npm(node package manage)是nodejs官方所提供的包管理工具。能够管理项目中所使用的所有 第三方库(jquery bootstrap)。可以完成项目中所有第三方库的增删查。
  • 对于包的理解可以认为一个包就是一个第三方库。比如jQuery就是一个包

基本使用

安装

  • 在安装nodejs时会自动安装npm。nodejs自带的npm不一定是最新的版本。可以通过命令更新npm版本

    npm install npm -g
    
    • -g:表示全局安装,即安装后,任何目录下都可以使用npm。
  • 可以通过npm --version来查看npm的版本

常用操作

  • npm init:初始化项目的包管理环境。初始化之后会生成一个package.json文件,该文件用于记录该项目用了哪些包以及对应的版本。

    • 在某个目录下,打开终端,执行命令:
    npm init;
    
    • 运行后会有几个选项需要选择,一路回车即可,最后输入y即可完成项目的初始化
  • npm list:当前项目已经安装的第三方库(包)

    npm list;
    
  • npm search 包名字:搜索远程的包仓库中是否有指定的包

  • npm install 包名:利用npm安装指定的包,默认安装该包的最新版本.也可以通过@版本号安装指定的版本

    npm install  jquery npm install jquery@3.5.1
    
  • npm uninstall 包名:卸载某个包

    npm uninstall jquery
    

改变npm所使用的远程仓库地址

  • npm存储包文件的服务器在国外,有时候会被墙,速度很慢,所以需要解决这个问题。

https://developer.aliyun.com/mirror/NPM?from=tnpm淘宝的开发团队把npm在国内做了一个镜像(也就是一个备份)。

  • 安装淘宝的cnpm:
npm install -g cnpm --registry=https://registry.npm.taobao.org;
#在任意目录执行都可以
#--global表示安装到全局,而非当前目录
#--global不能省略,否则不管用
npm install --global cnpm

安装包的时候把以前的npm替换成cnpm

#走国外的npm服务器下载jQuery包,速度比较慢
npm install jQuery;

#使用cnpm就会通过淘宝的服务器来下载jQuery
cnpm install jQuery;

如果不想安装cnpm又想使用淘宝的服务器来下载:

npm install jquery --registry=https://npm.taobao.org;

但是每次手动加参数就很麻烦,所以我们可以把这个选项加入到配置文件中:

npm config set registry https://npm.taobao.org;

#查看npm配置信息
npm config list;

只要经过上面的配置命令,则以后所有的npm install都会通过淘宝的服务器来下载

package.json

  • 每一个项目都要有一个package.json文件(包描述文件,就像产品的说明书一样)

  • 这个文件可以通过npm init自动初始化出来

  • 如果node_modules删除了也不用担心,只需要在控制面板中npm install就会自动把package.json中的dependencies中所有的依赖项全部都下载回来。

  • 建议每个项目的根目录下都有一个package.json文件

  • 建议执行npm install 包名的时候都加上--save选项,目的是用来保存依赖信息

package.json和package-lock.json

npm 5以前是不会有package-lock.json这个文件

npm5以后才加入这个文件

当你安装包的时候,npm都会生成或者更新package-lock.json这个文件

  • npm5以后的版本安装都不要加--save参数,它会自动保存依赖信息
  • 当你安装包的时候,会自动创建或者更新package-lock.json文件
  • package-lock.json这个文件会包含node_modules中所有包的信息(版本,下载地址。。。)
    • 这样的话重新npm install的时候速度就可以提升
  • 从文件来看,有一个lock称之为锁
    • 这个lock使用来锁版本的
    • 如果项目依赖了1.1.1版本
    • 如果你重新install其实会下载最细版本,而不是1.1.1
    • package-lock.json的另外一个作用就是锁定版本号,防止自动升级

文章作者: 时光路人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 时光路人 !
评论
  目录