【Node.js】 npm与包

news2024/9/23 15:25:05

npm与包

          • 什么是包
          • 包的来源
          • 为什么需要包
          • 从哪里下载包
          • 怎么下载包
          • 初体验
          • 在项目中安装包的命令
          • npm的注意点
          • 包的语义化版本规范
          • 包管理配置文件(package.json)
            • 当第三方包的体积过大时
            • 快速创建package.json
            • dependencies节点
            • devDependencies节点
          • 卸载包
          • 解决下载包速度慢的问题
          • 安装nrm
          • 包的分类
          • md文档转html页面小工具
          • 规范的包结构

什么是包
  • node.js中的第三模块又叫做包
包的来源
  • 包由第三方个人或团队开发出来的,免费供所有人使用
为什么需要包
  • 由于Node.js内置模块提供了一些底层的API,导致在基于内置模块进行项项目开发时,效率低
  • 包是基于内置模块封装出来的饿,提供了更高级,更方便的API,极大的提高了开发效率
从哪里下载包
  • 国外的IT公司 npm,Inc,有个网站:https://www.npmjs.com,进行搜索包
  • 它是全球最大的包共享平台
  • 提供了一个地址为http://registry.npmjs.org/的服务器(需要工具来进行跳转),来对外共享所有的包,可以在上面下载所需要的包
怎么下载包
  • 通过包管理工具Node Package Manager(简称npm包管理工具),这个工具随着Node.js的安装包一起被安装到了用户电脑上
  • 终端 npm -v可以查看包
初体验

格式化时间

  • 传统方法
//文件名:Datemiss.js
//定义格式化时间的方法,传入日期时间
function getTime(time) {
    const dt = new Date(time)
    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={
    getTime
}
const miss1 = require('./Datemiss.js')
const dt = new Date()
console.log(miss1.getTime(dt))//2023-02-15-13-26-04
  • npm方法
  • 使用npm install moment 命令进行下载
const moment = require('moment')
const dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)//2023-02-15 13:36:39

在这里插入图片描述
在这里插入图片描述

在项目中安装包的命令
  • npm install 包的完整名字
  • 简洁写法:npm i 包的完整名字
  • 想知道包里面的用法,就去搜包
  • 一般会自动安装最新版本包,也可以通过@符号指定具体的版本,类似,npm i moment@2.22.2
  • 一次安装多个包,可以通过空格,类似,npm i jquery art-template
  • 一次安装项目所有包,通过npm i
  • 安装到项目开发阶段的包,项目上线之后不会用,通过-D,类似npm i 包名 -D,等价于npm i 包名 - -save-dev
npm的注意点
  • 初次安包完成,会多配置文件,程序员不要手动修改,npm包管理工具会自动维护
  • node_modules文件夹用来存放所有已安装到项目中的包
  • package-lock配置文件记录node_modules目录下的每一个包的下载信息,类似,包名,版本号,下载地址
包的语义化版本规范
  • 版本号以点分十进制形式进行定义,例如,2-24-0
  • 第一位数字代表 ,大版本
  • 第二位数字代表,功能版本
  • 第三位数字代表,bug修复版本
  • 只要前面的版本号增加,后面的版本号就要归零
包管理配置文件(package.json)
  • npm规定,在项目目录下,必须提供一个叫做package.json的包管理配置文件,用来记录与项目有关的一些配置信息
  • 记录了项目中用到了哪些包
当第三方包的体积过大时
  • 当文件第三方包的体积过大,不方便团队成员之间共享源代码,
  • 解决方案:共享时候删除node_modules,也就是将文件夹,添加到.gitignore忽略文件中
  • 上传代码时,可以选择只上传源代码
  • 删除了node_modules,其他人如何使用呢,其他人通过package.json可以进行下载
快速创建package.json

npm init -y ,一般新建项目文件夹后,执行它

  • 上述命令只能在英文的目录下成功运行,所以,项目文件名一定使用英文命名,不用使用中文,不能出现空格
  • 安装包的时候npm install命令时候,npm包管理工具会自动把包名称和版本号,记录在package.json中
dependencies节点
  • package.json文件中,有一个dependencies节点,专门用来记录您使用npm install命令安装了哪些包
devDependencies节点
  • 只在开发阶段使用,建议把这些包记录到devDependencies节点
  • 如果在开发和上线之后都需要用到,建议把这些包记录到dependencies节点
卸载包

npm uninstall 名字,来卸载指定的包,也会删除dependencies节点里面的信息

解决下载包速度慢的问题

为什么下载包这么慢?

  • 在使用npm下包的时候,默认从国外的http://registry.npmjs.org/服务器进行下载,此时,下载 的网络数据的传输需要经过漫长的海底光缆,因此下包速度慢

淘宝NPM镜像服务器

  • 淘宝NPM镜像服务器,淘宝在国内搭建了一个服务器,专门把国外官方服务器上的包同步到国内的服务器上,然后在国内提供下包的服务,从而极大的提高了下载速度
  • 淘宝NPM镜像服务器作用:
  • 每隔一段时间,自动把npm 官方服务器的包同步在国内
  • 对国内用户提供下包服务

扩展:镜像,是一种文件存储形式,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像

切换npm 的下包镜像源

  • 下包的镜像源,指的就是下包的服务器地址
  • 查看当期的下包镜像源,npm config get registry
  • 切换为淘宝镜像源,npm config set regisitry=https://registry.npm.taobao.org/
  • 检查镜像是否下载成功,npm config get registry
  • 切换国外:npm config set registry https://registry.npmjs.org/
  • 为了更快更方便的切换镜像源,可以安装nrm这个小工具,利用这个工具提供的终端命令,可以快速查看和切换
安装nrm
  • npm i nrm -g, 通过-g,将nrm安装为全局可用的工具
  • nrm ls ,查看所有可用的镜像源
  • nrm use taobao ,切换为taobao镜像
    在这里插入图片描述
包的分类
  • 项目包,被安装到项目的node_modules目录中的包,都是项目包
  • 项目包又分为两类,
  • 开发依赖包,只在开发期间用到的包
  • 核心依赖包,在开发期间和项目上线之后都会用到的包
  • 全局包,如果提供了-g参数,则会把包安装为全局
  • 一般都会放置在:C:\Users\pc\AppData\Roaming\npm\node_modules下
  • 卸载全局包:npm uninstall 包名 -g
  • 只有工具性质的包,才有全局安装的必要性
md文档转html页面小工具

扩展:iSting_toc是一个可以把md文档转为html页面的小工具

//将iStall_toc安装为全局包
npm installl -g iSting_toc
//调用iSting_toc,实现转化功能
iSting_toc -f要转换的md文件路径 -o

规范的包结构
  • 组成结构
  • 包必须以单独的目录存在
  • 包的顶级目录下要包含package.json这个包管理配置文件
  • package.json中必须包含name,version,main这三个属性,分别代表包的名字,版本号,包的入口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/351303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

H.264视频隐写中可用于隐藏的场地(变换过程)

与静止图像中的信息隐藏类似,通过位平面替换的方式,亮度DCT系数通常被用于信息隐藏。 Ma等[77]提出将信息嵌入在I-frame中量化的DCT系数中(亮度)。在分析DCT系数与像素值产生的失真之间的关系的基础上,对几个系数进行配对,以达到数…

Web前端的未来发展怎样?

在求职的道路上,很多人都会经历漫长的迷茫期,如何找到职业方向成为人很多正在探索的事情!当我们决定学习一个技能的时候,首先会考虑到零基础是否可以学,这个技术的前景怎么样,薪资高不高,未来发…

JavaSE学习day8 API的使用和String的内存原理

1.API 1.1API概述 什么是API API (Application Programming Interface) :应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这…

基于机器学习的推荐算法研究与实现

摘要随着互联网的普及,人们可以通过搜索引擎、社交网络等方式获取大量的信息资源。但是,面对如此之多的信息,人们往往会感到迷失和困惑,无法快速准确地找到自己需要的信息。在这种情况下,推荐算法的出现为我们提供了一…

如何使用Xshell巧妙的连接服务器

最近一直在想到底写那些技术性文章,正好我之前买的一台服务器还没怎么使用,所以准备打算出一期在Xshell上使用服务器的教程的。 首先,为什么要使用Xshell连接云服务器呢? 1、自己打开服务器很麻烦,每次都要在网页进行登录操作&…

2023美赛C题:预测 Wordle 结果

以下内容全部来自本人人工翻译,仅供参考。 文章目录背景要求附件数据文件条目描述纽约时报网站上发布的Wordle指导方针词汇表参考文献服务背景 Wordle是目前纽约时报每天提供的一种受欢迎的谜题。玩家试图通过在六次或更少的机会内猜测一个五个字母的单词来解决谜题…

SAC代码 pytorch框架,2023年了还在用假的SAC?

呀他温,博主这次真要红温了,中路一个红温兰博请求对线!!!!!! 莫烦老师的强化学习视频不出SAC,我只能去看看别的程序员讲解SAC算法。结果。。。。 唉,&#…

后端,我是认真的

web框架介绍 1. 什么是web框架 应该叫web应用框架(web application framework)是一种开发框架。 通俗点来说,就是用来开发web应用的程序。 2. 为什么要使用框架来开发 互联网行业流行一句话叫“不要重复造轮子”,特别是对于新手和应用层开发人员。对于w…

TLP5754的代替品SLM343兼容光耦的单通道隔离驱动 应用解决方法

TLP5754的代替品SLM343兼容光耦的单通道隔离驱动应用解决方法是一种光兼容的单通道隔离MOSFET、IGBT具有不同驱动电流能力的栅极驱动器,以及UVLO电压电平。峰值输出电流为4.0A。主要特点和特点带来显著的性能和可靠性。性能亮点包括高共模瞬态抗扰度(CMT…

给 “rm” 命令添加个“回收站”,再也不用担心误删文件了!

1.rm命令解析 rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。 注意:使用rm命令要格外小心。因为一旦删除了…

WebSocket内存马之tomcat-websocket源码实现(内存马系列篇七)

写在前面 这篇主要是分析一下WebSocket协议在Tomcat容器中的源码实现,方便大家在后面能够更好的了解下一篇Websocket型内存马的原理。 这个也是内存马系列第七篇 Websocket 什么是websocket? 首先来了解一下什么是websocket WebSocket全双工通信协…

2023-2-16 刷题情况

神经网络 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向,兰兰同学在自学了一本…

Airtest自动化测试工具介绍

官方网站:http://airtest.netease.com/ Airtest IDE: 跨平台的UI自动化测试编辑器,适用于游戏和App,详细参见官网文档:http://airtest.netease.com/docs/cn/index.html 这是Airtest测试工具标配的IDE,目…

Eclipse插件安装全方式介绍(优化版)

Eclipse插件安装方式 Eclipse插件安装有很多种方式,常见的有以下四种: [在线安装] -使用插件地址安装[在线安装] - 通过插件市场查找插件安装[离线安装]- 下载插件文件后复制文件Eclipse目录[离线安装]- 外部引用 本篇以安装Eclipse Tomcat插件为例进…

#8排序算法#

1.排序 1概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起 来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排…

AWS攻略——使用ACL限制访问

文章目录确定出口IP修改ACL修改主网络ACL修改入站规则修改子网ACL创建子网ACL新增入站规则新增出站规则关联子网假如我们希望限制只有公司内部的IP可以SSH登录到EC2,则可以考虑使用ACL来实现。 我们延续使用《AWS攻略——创建VPC》的案例,在它的基础上做…

Spring 系列 - AOP

Spring 系列 - AOP Spring 框架从使用到现在已经有相当的长的一段时间了,但总是在使用的时候,感觉一直停留在表面,对框架的底层了解的并不多,最近一段时间,打算好好折腾一下 Spring 的底层,想对 Spring 有…

智能家居项目(二)之工厂模式的实现

目录 一、举例说明:把下面的代码转换成工厂模式的方式来实现 二、用工厂模式的方式来实现 1、创建三个函数的文件 2、创建一个 Animal.h文件,把上述三个函数名都放在这个文件中 3、创建一个main主函数文件 4、用工厂模式创建的文件浏览 一、举例说…

用主动游泳的三维水母模型量化美杜莎的(medusan)机械空间的性能(三)(2017)

文章目录用主动游泳的三维水母模型量化美杜莎的(medusan)机械空间的性能(三)(2017)原文链接:https://doi.org/10.1017/jfm.2017.34. 讨论小结用主动游泳的三维水母模型量化美杜莎的(medusan)机械…

iptables防火墙详解

目录iptables防火墙iptables简介iptables表filter(过滤表)nat(网络地址转换表)mangle(修改表)raw(原始表)security 表处理目标REJECT(拒绝)DNAT(目的网络地址转换)SNAT(源网络地址转换)MASQUERADE(伪装)LOGREDIRECT报文处理流程规则表之间的优先顺序报文规则匹配管理防火墙规则…