npm与包

npm与包,第1张

1.包是基于内置模块封装出来的;包和内置模块之间的关系,类似于jQuery和浏览器内置API之间的关系。

2.格式化时间

2.1 传统做法
①创建格式化时间的自定义模块
②定义格式化时间的方法
③创建补零函数
④从自定义模块中导出格式化时间的函数
⑤导入格式化时间的自定义模块
⑥调用格式化时间的函数

自定义格式化时间模块:

//1.定义格式化时间的方法
function dateFormat(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())

   return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}

//定义补零的函数
function padZero(n){
    return n>9?n:'0'+n
}

module.exports={
    dateFormat
}

导入模块:

//导入自定义的格式化时间的模块
const TIME=require('./dataFormat')

//调用方法,进行时间的格式化
const dt=new Date()
console.log(dt)

const newDT=TIME.dateFormat(dt)
console.log(newDT)

2.2使用npm包工具格式化时间
①使用npm包管理工具,在项目中安装格式化时间的包moment。
  安装包的命令:npm i 完整包的名称
  安装指定版本的包:npm i 完整包的名称@版本号
②使用require()导入格式化时间的包
③参考moment的官方API文档对时间进行格式化

//1.导入moment包
const moment=require('moment')

//2.参考moment官方API文档,调用对应的方法,对时间进行格式化
//2.1调用moment()方法,得到当前的时间
//2.2针对当前的时间,调用format()方法,按照指定的格式进行时间的格式化
const dt=moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)

3.初次装包多的文件

初次装包完成后,在项目文件下多一个叫node_modules的文件夹和package–lock.json文件。

node_modules文件夹用于存放所有已安装到项目中的包,require()导入第三方包时,就是从这个目录中查找并加载包。

package-lock.json配置文件用来记录node_modules目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等。

4.包管理配置文件

在项目根目录中,创建一个叫做package.json的配置文件,即可用来记录项目中安装了哪些包,从而方便剔除node_modules目录之后,在团队成员之间共享项目的源代码。
今后在项目开发中,一定要把node_modules文件夹,添加到.gitignore忽略文件中。

在执行命令所处的目录中(只能是英文目录,不能出现中文,不能出现空格),快速创建package.json文件
npm init -y

一次性安装所有包
npm install

卸载包
npm uninstall moment

devDependencies节点
 如果某些包只在项目开发阶段,在项目上线之后不会用到,则建议把这些包记录到devDependencies节点中。与之对应的,如果某些包在开发和项目上线之后都需要用到,则建议把这些包记录到dependencies节点中。

安装指定的包,并记录到devDependencies节点中
npm i 包名 -D
完整写法:npm install 包名 --save-dev

5.解决下包速度慢等问题

5.1切换npm的下包镜像源
查看当前的下包镜像源
npm config get registry
将下包的镜像源切换为淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/
检查镜像源是否下载成功
npm config get registry

5.2nrm
通过npm包管理器,将nrm安装为全局可用的工具
npm i nrm -g
查看所有可用的镜像源
nrm ls
将下包的镜像源切换为taobao镜像
nrm use taobao

在使用命令nrm ls过程中若出现“无法加载文件,在此系统上禁止运行脚本”等问题,可以使用管理员身份去运行powershell,更改执行策略。
设置执行策略:set-executionpolicy remotesigned
查看执行策略:get-executionpolicy
(remotesigned是执行策略,详情策略情况可上网查)

6.规范的包结构

①包必须以单独的目录存在
②包的顶级目录下要必须包含package.json这个包管理配置文件
③package.json中必须包含name,version,main这三个属性,分别表示包的名字、版本号、包的入口。

7.开发包

7.1需要实现的功能
①格式化日期
②转义HTML中的特殊字符
③还原HTML中的特殊字符

7.2初始化包的基本结构
①新建itheima-tools文件夹,作为包的根目录
②在itheima-tools文件夹中,新建如下三个文件:
 package.json(配置文件)
 index.js(包的入口文件)
 README.md(包的说明文档)

package.json

{
  "name": "itheima-tools",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

README.md


index.js

//包的入口文件

const date=require('./src/dateFormat')
const escape=require('./src/htmlEscape')

//向外暴露需要的成员
module.exports={
    ...date,
    ...escape
}

在包的根目录下再建名为src的文件夹,里面装实现不同功能的js文件,进行模块化封装。
dateFormat.js:

//1.定义格式化时间的方法
function dateFormat(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())
 
    return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
 }
 
 //定义补零的函数
 function padZero(n){
     return n>9?n:'0'+n
 }
 
 module.exports={
     dateFormat
 }

htmlEscape.js:

//定义转义HTML的方法
function htmlEscape(htmlStr){
    return htmlStr,replace(/<|>|"&/g,(match)=>{
        switch(match){
            case '<':
                return '<'
            case '>':
                return '>'
            case '"':
                return '"'
            case '&':
                return '&'
        }
    })
}



//定义还原HTML的方法
function htmlUnEscape(str){
    return str.replace(/<|>|"|&/g,(match)=>{
        switch(match){
            case '<':
                return '<'
            case '>':
                return '>'
            case '"':
                return '"'
            case '&':
                return '&'
        }
    })
}
module.exports={
    htmlEscape,
    htmlUnEscape
}

8.发布包

8.1 注册npm账号
访问https://www.npmjs.com/网站,点击sign up

8.2 登录npm账号
终端输入npm login,运行npm login命令前,必须先把下包的服务器地址切换为npm的官方服务器,否则会导致发布包失败。(通过nrm use npm此命令)

8.3 把包发布到npm上
将终端切换到包的根目录之后,运行npm publish.

8.4 删除已发布的包
npm unpublish 包名 --force 命令
①只能删除72小时以内发布的包。
②删除的包,在24小时内不允许重复发布。
③尽量不要在npm上发布没有意义的包。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1296389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存