Node.js学习笔记(二) 包管理器

简介: Node.js学习笔记(二) 包管理器

前言


NPM 是与 Node.js 一起安装的包管理器,用户可以从 NPM 服务器上下载别人编写的模块以提高开发效率

可以使用 npm --version 命令查看 npm 版本,可以使用 npm install npm -g 命令升级 npm 版本


正文


1、安装模块


可以使用 npm install 命令安装模块,安装模块的方式有两种,分别是本地安装 (local) 和全局安装 (global)


  • 本地安装的模块会放在当前目录中的 node_modules 目录下,可以通过 require() 引入程序
  • 全局安装的模块会放在全局目录中,可以直接在命令行使用


如果希望具备两者功能,那么需要同时在本地和全局安装模块,常用的命令和参数如下:


> # 根据当前文件下的 package.json 配置文件安装依赖
> npm install 
> npm i # 简写
> # 本地安装模块
> npm install moduleName
> # 全局安装模块
> npm install moduleName --golbal
> npm install moduleName -g # 简写
> # 安装模块,并将信息写入 package.json 文件中的 dependencies(生产环境依赖)
> npm install moduleName --save
> npm install moduleName -S # 简写
> # 安装模块,并将信息写入 package.json 文件中的 devDependencies(开发环境依赖)
> npm install moduleName --save-dev
> npm install moduleName -D # 简写


2、卸载模块


可以使用 npm uninstall 命令卸载模块,常用的命令和参数如下:

> # 删除指定模块(本地)
> npm uninstall moduleName
> # 删除指定模块(全局)
> npm uninstall moduleName --global
> npm uninstall moduleName -g # 简写
> # 删除模块,同时删除 package.json 文件中的 dependencies 关于该模块的信息
> npm uninstall moduleName --save
> npm uninstall moduleName -S # 简写
> # 删除模块,同时删除 package.json 文件中的 devDependencies 关于该模块的信息
> npm uninstall moduleName --save-dev
> npm uninstall moduleName -D # 简写


3、查看信息


我们可以使用 npm list 命令查看已安装的模块,常用的命令和参数如下:

> # 查看所有已安装的模块(本地)
> npm list
> # 查看所有已安装的模块(全局)
> npm list --global
> npm list -g # 简写
> # 指定展开的深度为零,即不展示依赖模块
> npm list --depth 0
> # 查看指定模块
> npm list moduleName


如果想了解更详细的信息,可以查看各模块的 package.json 文件,它位于模块目录下,用于描述模块的属性


一些常见的属性如下:


  • name:包的名称
  • version:包的版本号
  • npm 使用语义版本号,格式为 X.Y.Z,分别代表主版本号、次版本号和补丁版本号
  • 若修复漏洞,则更新 Z;若新增功能但向下兼容,则更新 Y;若有大变动且不向下兼容,则更新 X
  • description:包的描述
  • main:入口文件,默认是根目录下的 index.js 文件
  • dependencies:生产环境下的依赖包列表
  • devDependencies:开发环境下的依赖包列表
  • script:指定脚本命令,命令行下使用 npm run <scriptName> 即可运行
  • author:作者姓名
  • license:许可证类型
  • homepage:官网地址
  • repository:仓库信息


4、更新模块


可以使用 npm update 命令更新模块,常用的命令和参数如下:

> # 更新全部模块(本地)
> npm update
> # 更新全部模块(全局)
> npm update --global
> npm update -g # 简写
> # 更新指定模块
> npm update moduleName
> # 更新指定模块到指定版本
> npm update moduleName@X.Y.Z
> # 更新指定模块到最新版本
> npm update moduleName@latest
> # 更新执行模块,同时将信息记录到 package.json 文件
> npm update moduleName --save

使用 npm update 命令有两个注意的地方,第一个是 版本不能回退,第二个是 只更新到次版本号

比如 lodash 模块有三个版本,分别是 3.9.13.10.14.17.15

假如现在我们安装好了 3.10.1 版本的 lodash,则它既不能回退到 3.9.1,也不能更新到 4.17.15


5、修改配置


(0)一般格式

> npm config --help
# npm config set <key> <value>
# npm config get [<key>]
# npm config delete <key>
# npm config list [--json]
# npm set <key> <value>
# npm get [<key>]
# alias: c
> npm config list
# ; cli configs
# metrics-registry = "https://registry.npmjs.org/"
# scope = ""
# user-agent = "npm/6.4.1 node/v10.15.3 win32 x64"
# ; userconfig C:\Users\<username>\.npmrc
# registry = "https://registry.npmjs.org/"
# ; builtin config undefined
# prefix = "C:\\Users\\<username>\\AppData\\Roaming\\npm"
# ; node bin location = C:\nodejs\node.exe
# ; cwd = C:\Users\<username>\Desktop
# ; HOME = C:\Users\<username>
# ; "npm config ls -l" to show all defaults.


对于 npm,有七种不同级别的配置方式,其优先级从高到低排序如下:


  • 命令行参数
  • 环境变量:以 npm_config_ 开头的环境变量被认为是 npm 配置
  • 项目 .npmrc 配置文件:位于项目根目录下
  • 用户配置:使用命令 npm config get userconfig 可查看配置文件路径
  • 全局配置:使用命令 npm config get globalconfig 可查看配置文件路径
  • 内置 .npmrc 配置文件:位于 npm 的安装目录下
  • 默认配置


(1)设置代理

> # 查看代理,默认为 https://registry.npmjs.org/
> npm config get registry
> # 修改代理
> npm config set registry https://registry.npm.taobao.org


(2)设置全局安装的默认路径

> # 查看全局安装的默认路径,Windows 下默认为 C:\Users\<username>\AppData\Roaming\npm
> npm config get prefix
> # 修改全局安装的默认路径
> npm config set prefix C:\nodejs\npm


(3)设置缓存路径

> # 查看缓存路径,Windows 下默认为 C:\Users\<username>\AppData\Roaming\npm-cache
> npm config get cache
> # 修改缓存路径
> npm config set cache C:\nodejs\npm-cache


6、npx


(1)介绍


最后稍微补充一下 npx,如果我们说 npm 是一个包管理器,那么 npx 就是一个包执行器,什么意思呢?


我们知道,本地安装的包只能在项目中使用,只有全局安装的包才能在命令行使用,这样就会造成一些不便


npx 就是为了解决这样的问题出现的,它可以在命令行中直接运行指定的模块


(2)原理


在默认情况下,npx 首先会在项目下的 node_modules/.bin 目录和系统环境变量 $PATH 中查找


如果没有找到,npx 就会将该模块下载到一个临时目录,使用后再把它删除,有两个参数可以更改这种默认行为


  • --no-install:强制使用本地模块,不去下载远程模块,若在本地没有找到模块,那么直接报错
  • --ignore-existing:强制使用远程模块,即使本地有该模块,也不使用


(3)例子


  • 在全局未安装 create-react-app 的情况下,使用 create-react-app 创建一个脚手架
npx create-react-app my-app


  • 使用特定版本的 Node 执行脚本文件
npx node@12.18.0 test.js


(4)思考


如果我们不使用 npx,是否有办法在命令行里执行项目中安装的模块呢?答案是肯定的,只不过比较麻烦点


第一种方法,写完整的路径去调用,node_modules/.bin/moduleName

第二种方法,在 package.json 文件的 script 字段中使用


目录
相关文章
|
4月前
|
JavaScript 前端开发 开发者
Node学习笔记:HTTP模块
总的来说,Node.js的HTTP模块是一个强大的工具,可以帮助你处理HTTP协议的各种需求。无论你是想开设自己的餐厅(创建服务器),还是想去别的餐厅点菜(发出请求),HTTP模块都能满足你的需求。
118 18
|
8月前
|
存储 资源调度 JavaScript
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具。npm 是官方默认的包管理器,提供依赖管理、安装和更新等功能;cnpm 是由阿里巴巴开发的 npm 镜像,专为中国大陆用户优化,解决下载速度慢的问题;pnpm 通过硬链接技术提高安装速度并节省磁盘空间,特别适合磁盘资源紧张的环境。三者命令类似,但各有特色,开发者可根据需求选择合适的工具。
804 5
|
JavaScript
Nodejs的cnpm包管理器快速入门
介绍Node.js的cnpm包管理器,包括cnpm的实现原理、如何安装cnpm、使用cnpm安装软件包,以及Node.js搜索包的流程。
286 2
Nodejs的cnpm包管理器快速入门
|
存储 JavaScript
Nodejs的npm包管理器快速入门
介绍Node.js的npm包管理器的快速入门,包括包的概念、结构、描述文件、npm常用命令如安装、搜索、移除软件包,以及如何处理常见的npm工具部署错误。
253 2
Nodejs的npm包管理器快速入门
|
12月前
|
JavaScript 前端开发 API
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
Vue学习笔记3:对比纯JavaScript和Vue实现数据更新的实时视图显示
|
12月前
|
Prometheus 监控 Cloud Native
prometheus学习笔记之node-export
prometheus 监控 node-exporter
|
12月前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
11月前
|
JavaScript 前端开发
【干货分享】JavaScript学习笔记分享
【干货分享】JavaScript学习笔记分享
114 0
|
Java jenkins Shell
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
jenkins学习笔记之五:Maven、Ant、Gradl、Node构建工具集成
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的云的学习笔记系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的云的学习笔记系统附带文章源码部署视频讲解等
114 0