欢迎来到Bokey的空间🌼

加载中...

💓 1🔥 24

npm - Node包管理器🗃

Node的包管理器,它是Node.js默认的,以JavaScript编写的软件包管理系统,用npm来分享和使用代码已经成了前端的标配,这里会介绍它的基本用法

🕘 2025-05-14

简介

NPM( Node Package Manager),简称Node包管理工具;它是Node.js默认的,以JavaScript编写的软件包管理系统,用npm来分享和使用代码已经成了前端的标配;npm被全球超过1100万开发人员所依赖,拥有超过一百万个软件包,是世界上最大的软件注册表;

因此,拥有了NPM,相当于拥有了超过一百万个软件包

安装

在安装完Node.js后,npm是附带安装的(内置的);但我们需要配置一些npm相关的配置,如npm的全局安装模块的位置和缓存路径,以及加快下载的镜像等
修改全局模块下载路径/缓存路径

  1. 在Node.js的目录(我的目录 :D:\MyDownload\nodeJS)下,创建node_global(全局模块)和node_cache(全局缓存)文件夹
  1. 在该目录打开cmd控制台,输入命令进行配置:
shell 复制代码
# 全模块路径配置:
# npm config set prefix 创建的node_global文件夹所在路径
npm config set prefix "D:\MyDownload\nodeJS\node_global"
--------------------------------------------------------
# 缓存路径配置:
# npm config set cache 创建的node_cache文件夹所在路径
npm config set cache "D:\MyDownload\nodeJS\node_cache"
  1. 修改系统环境变量
    创建系统变量NODE_HOME,变量值为Node.js的下载路径


然后系统变量的Path中,添加刚刚配置的%NODE_HOME%(将原来的绝对路径覆盖),如下图:

在用户变量的Path中,添加全局模块路径

随后安装express包测试一下

shell 复制代码
npm install express -g

然后在相应路径看是否下载有该包

注:若执行命令出现如下报错

是由于权限的原因,右击Nodejs文件夹 -> 属性 -> 安全,点击编辑,将所有权限都✅即可

如果还不行,就试试将node_cache和node_global文件夹都进行上面的权限✅,就可以了

更换npm源为淘宝镜像

npm 默认的registry为https://registry.npm.taobao.org,也就是下载 npm 包时是从国外的服务器下载,在国内下载很慢;因此我们一般在国内使用淘宝的镜像来下载,使用命令:

shell 复制代码
npm config set registry https://registry.npm.taobao.org/

再使用命令

shell 复制代码
npm config get registry

查看是否配置成功

全局安装基于淘宝源的cnpm

由于npm的服务器在海外,所以访问速度比较慢,访问不稳定 ,cnpm的服务器是由淘宝团队提供 服务器在国内cnpm是npm镜像,一般会同步更新,相差在10分钟,所以cnpm在安装一些软件时候会比较有优势;但是一般cnpm只用于安装时候,所以在项目创建与卸载等相关操作时候我们还是使用npm;命令:

shell 复制代码
npm install -g cnpm --registry=https://registry.npm.taobao.org


查看是否下载成功:

shell 复制代码
cnpm

使用

npm升级,信息查询

当下载好Node后我们就可以使用npm命令进行包的管理,查看npm版本:

shell 复制代码
npm -v # 查看npm版本
npm help # 查看 npm 命令列表
npm -l # 查看各个命令的简单用法
npm config list -l # 查看 npm 的配置


安装最新版本的npm:

shell 复制代码
npm install npm -g # Window 系统使用这个命令
sudo npm install npm@latest -g    # Linux 命令

注意:npm install npm@latest -g 安装完之后,如果报错( 报找不到 npm ),可以再执行 curl -L https://npmjs.com/install.sh | sh即可

npm init初始化package.json文件

在项目中引导创建一个 package.json 文件,安装包的信息保存到项目的 package.json 文件中,以便后续的其它的项目开发或者他人合作使用,因此,package.json 在项目中是必不可少的

shell 复制代码
npm init # 初始化package.json文件,但会提问一系列问题,如果觉得不用修改默认配置,一路回车就可以了
npm init -y # 直接用默认的配置初始化package.json文件(-f,-force,-yes都是一样的)
  • 作用:用于记录项目依赖,记录当前状态下项目中实际安装的各个 package 的版本号、模块下载地址、及这个模块又依赖了哪些依赖
  • 结构:
  • name:项目名,也就是在使用npm init 初始化时取的名字,但是如果使用的是npm init -y 快速初始化的话,那这里的名字就是默认存放这个文件的文件名
  • version:版本号
  • private:希不希望授权别人以任何形式使用私有包或未发布的
  • scripts-serve:是vue的项目启动简写配置
  • scripts-build:是vue的打包操作简写配置
  • dependencies:指定了项目运行时所依赖的模块
  • devDependencies:指定项目开发时所需要的模块,也就是在项目开发时才用得上,一旦项目打包上线了,就将移除这里的第三方模块
    package.json文件中版本号说明,安装时代表不同含义:
  • 5.0.3表示安装指定的5.0.3版本
  • ~5.0.3表示安装5.0.X中的最新版本
  • ^5.0.3表示安装5.X.X中的最新版本

package-lock.json文件

该文件在使用npm install ...时生成

  • 作用:用于记录当前状态下项目中实际安装的各个 package 的版本号、模块下载地址、及这个模块又依赖了哪些依赖
  • 结构:
  • name:项目名,也就是在使用npm init 初始化时取的名字,但是如果使用的是npm init -y 快速初始化的话,那这里的名字就是默认存放这个文件的文件名
  • version:版本号
  • private:希不希望授权别人以任何形式使用私有包或未发布的
  • scripts-serve:是vue的项目启动简写配置
  • scripts-build:是vue的打包操作简写配置
  • dependencies:指定了项目运行时所依赖的模块
  • devDependencies:指定项目开发时所需要的模块,也就是在项目开发时才用得上,一旦项目打包上线了,就将移除这里的第三方模块

为什么有了package.json,还需要 package-lock.json 文件呢?
当项目中已有 package-lock.json 文件,在安装项目依赖时,将以该文件为主进行解析安装指定版本依赖包,而不是使用 package.json 来解析和安装模块
因为 package 只是指定的版本不够具体,而package-lock 为每个模块及其每个依赖项指定了版本,位置和完整性哈希,所以它每次创建的安装都是相同的
无论你使用什么设备,或者将来安装它都无关紧要,每次安装都应该给你相同的结果

npm root查看包的安装路径

shell 复制代码
npm root [-g] # 查看包的安装路径

npm config管理npm的配置路径

基本语法:

shell 复制代码
npm config set <key> <value> [-g|--global] # 设置配置
npm config get <key> # 得到配置
npm config delete <key> # 删除配置
npm config list # 查看所有配置
npm config edit # 打开配置文件,编辑配置
npm get <key> # 查看配置
npm set <key> <value> [-g|--global] # 设置配置

常用命令:
命令指定使用 npm init时,生成的 package.json文件的字段默认值

shell 复制代码
npm config set init.author.name $name # 设置npm init时,package.json文件的作者名属性
npm config set init.author.email $email # 设置npm init时,package.json文件的邮箱属性

设置代理示例:在公司内网,因为公司的防火墙原因,无法完成任何模块的安装时,可以执行下面命令

shell 复制代码
npm config set proxy=http://xxx

npm cache管理模块缓存

最常用的就是清理缓存命令:

shell 复制代码
npm cache clean

npm set设置环境变量

npm set用来设置环境变量

shell 复制代码
# 设置作者名
npm set init-author-name 'Your name'
# 设置邮箱
npm set init-author-email 'Your email'
# 设置url
npm set init-author-url 'http://yourdomain.com'
# 设置许可证
npm set init-license 'MIT'
# 为 npm init 设置了默认值,以后执行 npm init 的时候,package.json 的作者姓名、邮件、主页、许可证字段就会自动写入预设的值

这些信息会存放在用户主目录的 ~/.npmrc文件,使得用户不用每个项目都输入。如果某个项目有不同的设置,可以针对该项目运行 npm config

npm info查看模块信息

查看模块信息:

shell 复制代码
npm info # 模块名

例:

npm search搜索npm模块

搜索模块:

shell 复制代码
npm search /*搜索词*/

npm list列出安装模块

以树形结构列出当前项目安装的所有模块,以及它们依赖的模块:

shell 复制代码
npm list # 注意:这个是列出本地( 即当前目录 )安装的模块
npm list -global       # 加上 global 参数,会列出全局安装的模块
npm ls -g              # 查看全局安装的模块及依赖 
npm list underscore    # npm list 命令也可以列出单个模块

例:

npm install安装模块

安装模块常用命令:

shell 复制代码
# 安装模块到当前目录下
npm install # 模块名
# -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置
npm install -g # 模块名
# -save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点(运行时依赖)写入依赖
npm install -save # 模块名
# 附:--save:模块名将被添加到 dependencies,可以简化为参数 -S。
# -save-dev 的意思是将模块安装到项目目录下,并在package文件的devDependencies(开发时依赖)节点写入依赖
npm install -save-dev # 模块名
# 附:--save-dev:模块名将被添加到 devDependencies,可以简化为参数 -D 

全局模块和本地模块的区别:

  • 全局模块所有项目都可以使用,本地模块只有当前项目可以使用
  • 一般全局模块都是一些命令包,在全局模块容易导致版本冲突,不能在js中通过require调取使用
  • 安装在本地模块不能直接的使用命令操作(安装在全局可以使用命令)

附:
安装在全局目录下的模块,大部分都会生成一个xxx.cmd的文件,只要有这个文件,那么xxx就是一个可执行的命令(例如yarn.cmd =>yarn 就是命令)

npm uninstall卸载模块

卸载模块:

shell 复制代码
# 卸载该项目模块
npm uninstall /*模块名*/
# 卸载全局模块
npm uninstall -g /*模块名*/
# 卸载开发版本模块
npm uninstall --save-dev /*模块名*/

npm update更新模块

更新模块

shell 复制代码
# 升级当前项目的指定模块
npm update # 模块名
# 升级全局安装的模块
npm update -g # 模块名

它会先到远程仓库查询最新版本,然后查询本地版本。如果本地版本不存在,或者远程版本较新,就会安装;使用-S--save参数,可以在安装的时候更新 package.json里面模块的版本号

JavaScript 复制代码
// 更新之前的package.json
dependencies: {
  dep1: "^1.1.1"
}
// 更新之后的package.json
dependencies: {
  dep1: "^1.2.2"
}

注意,从 npm v2.6.1 开始,npm update只更新顶层模块,而不更新依赖的依赖,以前版本是递归更新的。如果想取到老版本的效果,要使用下面的命令

shell 复制代码
npm --depth 9999 update

npm outdated检查模块是否过时

检查模块是否过时:

shell 复制代码
npm outdated

输入命令后会显示模块最新的版本信息

npm run调用script

npm不仅可以用于模块管理,还可以用于执行脚本。package.json文件有一个 scripts字段,可以用于指定脚本命令,供 npm直接调用

JSON 复制代码
{
  "script":{
    "dev": "vue-cli-service serve --mode dev --port 8080"
  }
}

package.json文件中的字段script的每一个属性都是一个自定义的脚本命令。
在命令行中可以通过执行npm run dev来执行这段脚本

npm - Node包管理器🗃
  • 发布于

    2025-05-14

  • 更新于

    2025-10-10

  • 类目

  • 作者

    Bokey

  • 版权协议

cc

Developed & Design by Bokey
已经发电运行了 0 天,我会继续努力
Copyright © 2024-2029 Bokey's Space
CC BY-NC-SA 4.0
粤ICP备2025398830号-1