npm

1.1k 词
npm

npm-软件包管理器#

npm 是Node.js标准的软件包管理器。

在2017年1月时,npm仓库中就已有超过350000个软件包,这使其成为世界上最大的单一语言代码仓库,并且可以确定几乎有可用于一切的软件包

它起初是作为下载和管理Node.js包依赖的方式,但其现在也已成为前端js中使用的工具

使用:

  1. 初始化清单文件: npm init -y (得到package.json文件,有则略过此命令)
  2. 下载软件包:npm i 软件包名称
  3. 使用软件包
常用命令
功能 命令
执行js文件 node xxx.js
初始化package.json npm init -y
下载本地软件包 npm i 软件包名
下载全局软件包 npm i 软件包名 -g
删除软件包 npm uni 软件包名

练习#

需求:使用dayjs软件包,来格式化日期时间

准备一个空项目文件夹010,其中只有自己的server.js

在初始化项目后首先生成一个package.json文件

在下载软件包后会生成相应的文件

我们要做的是引入软件包模块并使用

// 3.使用
const dayjs = require('dayjs');
const nowDateStr = dayjs().format('YYYY-MM-DD');
console.log(nowDateStr);

效果如下:

npm-安装所有依赖#

有时我们会遇到这样的情况:从其他人或网上拿到一个项目,其中有package.json和package-lock.json,但是缺少node_modules,没有下载的软件包

若是如此则无法正常运行

因为缺少了依赖的本地软件包

为什么别人的项目没有node_modules呢?

因为,自己用npm下载依赖比磁盘传递拷贝要快得多

所以接下来解决这个问题:项目终端输入命令: npm i

之后npm会根据package-lock.json固定的软件包数据下载好相应的软件包

做个实验#

以上面创建的项目010为例,删除其中的 node_modules 文件夹

它的原样:

我们的server.js:

// 3.使用
// 格式化日期
const dayjs = require('dayjs');
const nowDateStr = dayjs().format('YYYY-MM-DD');
console.log(nowDateStr);

// 求数组最大值
const lodash = require('lodash');
console.log(lodash.max([2, 7, 9, 4, 0, 1, 10, 23, 4]));

执行结果:

删除node_modules后果然报错了:

接下来直接输入 npm i ,结果软件包全部重新下载,项目node_modules恢复如初,再次执行server.js也没问题:

npm-全局软件包nodemon#

nodemon作用:替代node命令,检测代码更改,自动重启程序

软件包区别:

  • 本地软件包: 当前项目内 使用,封装 属性和方法 ,存在于node_modules
  • 全局软件包: 本机所有项目 使用,封装 命令和工具 ,存在于系统设置的位置

使用:

  1. 安装: npm i nodemon -g (-g代表安装到全局环境中)
  2. 运行:nodemon 待执行的目标js文件

实测#

需求:启动准备好的项目,修改代码保存后,观察自动重启应用程序

安装之前:代码修改后要查看效果,需要重新运行程序

安装之后:修改执行程序保存后自动更新效果