npm与包的运用
案例:格式化时间
传统做法
dateFormat.js
//1. 定义格式化时间的方法
function dataFormat(dtStr) {
const dt = new Date(dtStr)
const y = dt.getFullYear()
const m = padZero(dt.getMonth() + 1)
const d = padZero(dt.getDate())
const hh = padZero(dt.getHours())
const mm = padZero(dt.getMinutes())
const ss = padZero(dt.getSeconds())
//`YYYY-MM-DD HH:mm:ss`
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
// 定义补0函数
function padZero(n) {
return n > 9 ? n : '0' + n
}
module.exports = {
dataFormat
}
test.js
//导入自定义的格式化时间的模块
const TIME = require('./dataFormat')
//调用方法,进行时间的格式化
const dt = new Date()
//console.log(dt) 未格式化
const newDT = TIME.dataFormat(dt)
console.log(newDT)
高级做法
//1. 导入所需的包 npm i moment(@版本号) 安装多个包 用空格 分隔
//注意导入的名称,就是装包时候的名称
const moment = require('moment')
const dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)
初次装包完成后,在项目文件夹下多一个node_modules
的文件夹和package-lock.json
的包管理配置文件
node_modules
用来存放所有已安装到项目中的包。require()导入第三方包时,就是从这个目录中查找并加载包。
package-lock.json
用来记录node_modules
目录下的每一个包的下载信息eg:包的名字、版本号、下载地址。
版本号:第1位数字表示大版本(底层重构)、第2位数字表示功能版本、第3位数字表示Bug修复版本
包管理文件
- 在项目根目录中,创建一个叫做
package.json
的配置文件,用来记录项目中安装了那些包。从而方便剔除node_modules
目录之后,在团队成员之间共享项目的源代码 - 在项目开发中,一定要把
node_modules
文件夹,添加到.gitgnore
忽略文件中。 package.json
文件中,有一个dependences
节点,专门用来记录你使用npm install
安装了哪些包- 一次性安装所有包:运行
npm iinstall
命令 一次性安装所有的依赖包 devDependencies
节点:如果某些包只在项目开发阶段会使用,在项目上线后不会用到,则建议把这些包记录到devDependencies
节点中dependencies
节点:某些包在开发和项目上线之后都需要用到,则建议把这些包记录到dependencies
//安装指定的包,并记录到`devDependencies`节点中
npm i 包名 -D
解决包下载慢的问题
淘宝NPM镜像服务器:淘宝在国内搭建了一个服务器,专门把国外官网服务器上的包同步到国内服务器,然后在国内提供下包服务,从而极大的提高了下包的速度。
镜像(Mirroring):是一种文件存储形式,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像
- 下包的镜像源,指的就是下包的服务器地址
# 查看当前的下包镜像源
npm config get registry
# 将下包的镜像源切换为淘宝镜像源
npm config set regist=https://registry.npm.taobao.org/
# 检查镜像源是否下载成功
npm config get registry
为了更方便的切换下包的镜像源,我们可以安装nrm
这个小工具,利用nrm
提供的终端命令,可以快速查看和切换下载包的镜像源。
# 通过npm包管理器,将nrm 安装为全局可用的工具
npm i nrm -g
# 查看所有可用的镜像源
nrm ls
# 将下包的镜像源切换为 taobao 镜像
nrm use taobao