包
由于Node.js的内置模块仅提供了一些底层的API,导致基于内置模块进行项目开发的时候,效率很低。包是基于内置模块封装出来的,提供了更高级,更方便的API,极大的提高了开发效率
使用npm包的一些注意点
包的根目录中必须有package.json文件,记录里包的清单信心,其中最重要的是main,当包以文件方式导入时,记录了软件包的入口
npm软件包管理器
注意:下述命令只能在英文的目录下成功运行!所以,项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格
package.json文件中,有一个dependencies节点,专门用来记录您使用npm install命令安装了哪些包
1.(可选)初始化清单(生成package.json文件,y表示采用默认配置):npm init -y
2.下包 :npm i(install的简写) 软件包名称 同时会在本地生成一个node_modules中,将软件包源码放到node_modules中 ,npm会记录到package.json中并固化版本,在生成一个package-lock.json文件
3.需要包的文件导入引用包 (按CommonJs语法通过require使用模块名引入)
举例:
格式化时间
①使用npm包管理工具,在项目中安装格式化时间的包moment
②使用require()导入格式化时间的包
③参考monment的官方API文档对时间进行格式化
//npm下载命令 npm i monent
// 1. 导入需要的包
// 注意:导入的名称,就是装包时候的名称
const moment = require('moment')
const dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)
npm安装所有依赖
一般在项目传递的过程中不会传递node_modules,文件太大(细小文件特别多),只会传递项目文件和package.json和package-lock.json
注意:今后在项目开发中,一定要把node_modules文件夹,添加到.gitignore忽略文件中。
解决方法: npm i (下载package.json中记录的所有软件包,在去package-lock.json中查看包的固定版本)
devDependencies节点
如果某些包只在开发阶段会用到,在项目上线之后不会用到,则建议把这些包记录到devDependencies节点中。与之对应的,如果某些包在开发和上线之后都需要用到,则建议把这些包记录到dependencies节点中
命令:
//安装指定的宝,并记录到devDependencies节点中
npm i 包名 -D
//注意:上述命令时简写形式,等价于下面完整的写法:
npm install 包名 --save-dev
全局软件包nodemon
软件包区别:
1.本地软件包:当前项目内使用,封装属性和方法,存在于node_modules
2.全局软件包:本机所有项目使用 ,封装命令和工具,存在于系统设置的位置
Nodemon是一个帮助开发基于node.js的应用程序的工具,当检测到目录中的文件更改时,它会自动重启node应用程序。
npm i nodemon -g(-g代表安装到全局环境中)