7、Nodes.js包管理工具
四、包管理工具
4.1 npm(Node Package Manager)
Node.js官方内置的包管理工具。
命令行下打以下命令:
npm -v
如果返回版本号,则说明npm可以正常使用
4.1.1npm初始化
#在包所在目录下执行以下命令
npm init #正常初始化,手动输入包信息
npm init -y #快速初始化,全部使用默认的信息
完成后会在目录下生成package.json文件,文件内容如下:
{"name": "01_npm","version": "1.0.0","description": "Mypackage01","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "","license": "ISC"
}
注意事项:
1、package name(包名)不能使用中文和大写字母,默认是包的目录名,所以包目录名最好也不要使用中文和大写字母
2、version(版本号)要求x.x.x格式,x必须是数字,默认为1.0.0
3、ISC证书和MIT证书功能上是相同的
4、package.json可以手动创建和修改
5、使用npm init -y 或npm init --yes,可以快速创建package.json(全部使用默认值)
4.1.2搜索包
1)命令行方式
npm s <关键字>
npm search <关键字>
2)网站搜索
https://www.npmjs.com
4.1.3安装包
npm i <packageName>
npm i <packageName@version> ##安装指定版本
安装完以后,会在当前目录下生成一个名为node_modules的目录,这个目录下会保存所有安装的包。

这里我们安装了两个包(math和uniq)。
math和uniq里有js文件(包的主程序文件)和package.json(用于描述包的基本信息)
4.1.4导入安装的包
//导入并使用已安装的uniq包
//导入的时候会先到当前上当的node_modules里去找,如果没有找到,则会到上一级目录中的node_modules目录中去找,直到找到根目录为止
const uniq=require('uniq')let arr = [1,1,2,2,3,3]const result = uniq(arr)
console.log(result)
输出:
[ 1, 2, 3 ]
4.1.5生产依赖和开发依赖
开发环境:专门用来定代码的环境,只有程序员自己可以访问
生产环境:代码正式运行的环境,每个客户都可以访问
npm i -S <packageName> #生产依赖(默认),包信息保存在package.json的dependencies中。
npm i -D <packageName> #开发依赖,包信息保存在package.json的devDependencies中。
//package.json
{"dependencies": { //math和uniq是生产依赖的包"math": "^0.0.3","uniq": "^1.0.1"},"devDependencies": { //less是开发依赖的包(安装方式:nqm i -D less)"less": "^4.2.0"}
}
4.1.6全局安装
npm i -g <packageName>
全局安装的包,可以在命令行下任意位置运行
全局安装的包,不受工作目录及位置的影响
可以通过npm root -g,来查看全局安装名的位置
不是所有的包都适合使用全局安装,只有全局类的工具才适合。
示例:
#使用nodemon启动js文件,如果js文件有修改的话,它会自动重启服务
npm i -g nodemon
4.1.7安装npm包的全部依赖
#根据package.json和package-lock.json安装所有的依赖
#因为node-modules这个通常不会存入版本库(git),当其它程序员拉取代码后,是不包含npm包的,所以需要重新安装所有依赖
npm i
npm install
4.1.8删除npm包
npm r <packageName>
npm remove <packageName>
npm r -g <packageName> //删除全局包
4.1.9配置npm命令别名
通过配置别名,可以更简单的执行命令
配置package.json
"scripts": {"server":"node ./server.js","start":"node ./index.js",}
这样可以通过别名来执行命令
npm run server
npm start //start这个别名执行的时候不需要带run
4.1.20 cnpm
cnpm是淘宝构建的npmjs.com的完整镜像,也称为淘宝镜像,https://registry.npmmirror.com/
cnpm服务部署在国内阿里云上,可以提高包的下载速度
官方提供了一个全局工具包cnpm,功能和使用方式和npm相同
安装cnpm:
npm --registry https://registry.npmmirror.com/ i -g cnpm
4.1.21npm配置淘宝镜像
1)安装nrm工具
cnpm i -g nrm
2)使用nrm查看可用的镜像
nrm ls
输出:
npm ---------- https://registry.npmjs.org/ #官方镜像
yarn --------- https://registry.yarnpkg.com/
tencent ------ https://mirrors.cloud.tencent.com/npm/
cnpm --------- https://r.cnpmjs.org/
taobao ------- https://registry.npmmirror.com/
npmMirror ---- https://skimdb.npmjs.com/registry/
huawei ------- https://repo.huaweicloud.com/repository/npm/
3)切换到淘宝镜像
nrm use taobao
4)查看是否切换成功
npm config list
输出:
#这里我们看到,已经切换到了淘宝镜像
home = "https://npmmirror.com"
registry = "https://registry.npmmirror.com/"
4.2.22 使用npm发布包
1、创建一个包
2、注册账号并激活(https://www.npmjs.com/signup)
3、修改为官方镜像(npm use npm)
4、登入:(npm login)
5、提交包:(npm publish)
4.2.23更新包
1、更新代码
2、修改package.json中的版本号
3、发布更新(npm publish)
4.2.24删除包
npm unpublish
4.2yarn
yarn是facebook在2016年推出的新的Javascript包管理工具,官方地址:https://yarnpkg.com
特点:
速度快:yarn缓存了每个下载过的包,所以再次使用时,无需重新下载;
安全:在执行代码之前,会通过算法校验安装包的完整性;
可靠:使用详细、简洁的锁文件格式和明确的安装算法,能保证在不同的系统上无差异工作。
4.2.1安装yarn
npm i -g yarn
4.2.2常用命令
#初始化
yarn init /yarn init -y
#安装包
yarn add <packageName> #生产依赖
yarn add <packageName -dev> #开发依赖
#删除包
yarn remove <packageName> #删除项目依赖包
yarn global remove <packageName> #全局删除包#安装所有项目依赖
yarn#运行命令别名
yarn <别名> #不需要加run
4.2.3yarn配置淘宝镜像
yarn config set registry https://registry.npmmirror.com/
yarn config list #查看配置信息
4.3 node版本管理工具nvm
nvm(Node Version Manager),是用来管理node版本的工具,方便切换不同版本的node.js
下载地址:
https://github.com/coreybutler/nvm-windows/releases
常用命令
nvm list available #显示所有可以下载的Node.js版本
nvm list #显示已安装的版本
nvm install 18.12.1 #安装18.12.1版本的Node.js
nvm uninstall 18.12.1 #删除某个版本的js
nvm install lastest #安装最新新版本
nvm use 18.12.1 #切换到18.12.1版本的Node.js
相关文章:
7、Nodes.js包管理工具
四、包管理工具 4.1 npm(Node Package Manager) Node.js官方内置的包管理工具。 命令行下打以下命令: npm -v如果返回版本号,则说明npm可以正常使用 4.1.1npm初始化 #在包所在目录下执行以下命令 npm init #正常初始化,手动…...
网络地址转换——NAT技术详解
网络地址转换——NAT技术详解 一、引言 随着互联网的飞速发展,IP地址资源日益紧张。为了解决IP地址资源短缺的问题,NAT(Network Address Translation,网络地址转换)技术应运而生。NAT技术允许一个私有IP地址的网络通…...
问:数据库存储过程优化实践~
存储过程优化是提高数据库性能的关键环节。通过精炼SQL语句、合理利用数据库特性、优化事务管理和错误处理,可以显著提升存储过程的执行效率和稳定性。以下是对存储过程优化实践点的阐述,结合具体示例,帮助大家更好地理解和实施这些优化策略。…...
C++ vector的使用(一)
vector vector类似于数组 遍历 这里的遍历跟string那里的遍历是一样的 1.auto(范围for) 2.迭代器遍历 3.operator void vector_test1() {vector<int> v;vector<int> v1(10, 1);//初始化10个都是1的变量vector<int> v3(v1.begin(), --…...
深入浅出:ProcessPoolExecutor 处理异步生成器函数
深入浅出:ProcessPoolExecutor 处理异步生成器函数 什么是 ProcessPoolExecutor?为什么要使用 ProcessPoolExecutor 处理异步生成器函数?ProcessPoolExecutor 处理异步生成器函数的基本用法1. 导入模块2. 定义异步生成器函数3. 定义处理函数4…...
elementUI表达自定义校验,校验在v-for中
注意:本帖为公开技术贴,不得用做任何商业用途 <el-form :inline"true" :rules"rules" :model"formData" ref"formRef" class"mt-[20px]"><el-form-item label"选择区域" prop&qu…...
Elasticsearch 在linux部署 及 Docker 集群部署详解案例示范
1. 在 CentOS 上安装和配置 Elasticsearch 在 CentOS 系统下,安装 Elasticsearch 主要分为以下步骤: 1.1 准备工作 在开始安装之前,确保你的系统满足以下基本条件: CentOS 版本要求:推荐使用 CentOS 7 及以上版本。…...
短信验证码发送实现(详细教程)
短信验证码 接口防刷强检验以及缓存验证码阿里云短信服务操作步骤验证码发送实现 好久没发文啦!最近也是在工作中遇到我自认为需要记录笔记的需求,本人只求日后回顾有迹可寻,不喜勿喷! 废话不多说,直接上代码ÿ…...
P450催化的联芳基偶联反应-文献精读72
Chemoenzymatic Synthesis of Fluorinated Mycocyclosin Enabled by the Engineered Cytochrome P450-Catalyzed Biaryl Coupling Reaction 经工程化的细胞色素P450催化的联芳基偶联反应实现氟代麦环素的化学酶促合成 摘要 将氟原子引入天然产物有望生成具有改良或新颖药理特…...
在不支持AVX的linux上使用PaddleOCR
背景 公司的虚拟机CPU居然不支持avx, 默认的paddlepaddle的cpu版本又需要有支持avx才行,还想用PaddleOCR有啥办法呢? 是否支持avx lscpu | grep avx 支持avx的话,会显示相关信息 如果不支持的话,python运行时导入paddle会报错 怎么办呢 方案一 找公司it,看看虚拟机为什么…...
Python数据分析——Numpy
纯个人python的一个小回忆笔记,当时假期花两天学的python,确实时隔几个月快忘光了,为了应付作业才回忆起来,不涉及太多基础,适用于有一定编程基础的参考回忆。 这一篇笔记来源于下面哔哩哔哩up主的视频: 一…...
JMeter快速入门示例
JMeter是一款开源的性能测试工具,常用于对Web服务和接口进行性能测试。 下载安装 官方下载网址: https://jmeter.apache.org/download_jmeter.cgi也可以到如下地址下载:https://download.csdn.net/download/oscar999/89910834 这里下载Wi…...
【333基于Java Web的考编论坛网站的设计与实现
毕 业 设 计(论 文) 考编论坛网站设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计…...
计算机网络关键名词中英对照
物理层 IMP - Interface Message Processor - 接口信息处理机 MODEM - Modulator-Demodulator - 调制解调器 LAN - Local Area Network - 局域网 FDM - Frequency Division Multiplexing - 频分复用 TDM - Time Division Multiplexing - 时分复用 STDM - Statistical Time…...
二叉树的学习
除了根节点外的其他节点只有一个直接前驱,有多个直接前驱的逻辑结构叫做图 任何一个树都可以看成是一个根节点和若干个不相交的子树构成的; 构建思维导图时使用树形结构 题目中给出AB是堂兄弟节点说明他们处在同一层 描述两节点之间的路径是从上到下的,同层没有路径,一条边记录…...
免费开源的医疗信息提取系统:提升超声波影像的诊断价值
一、系统概述 思通数科推出的医疗信息精准抽取系统,致力于解决当前医疗行业面临的信息碎片化和数据管理难题。传统医疗过程中,超声波影像数据与诊断报告之间的脱节,往往导致信息无法有效整合,影响医生的诊断效率与准确性。我们的…...
Bash 中的 ${} 和 $() 有什么区别 ?
Bash (Bourne-Again SHell) 是一种流行的 Unix SHell,用于编写脚本。如果您使用 Bash 脚本,那么了解不同的语法元素对于提高脚本的效率和避免错误是很重要的。 在本文中,我们将解释 Bash 中 ${} 和 $() 语法之间的区别,并向您展示…...
SPSS、R语言因子分析FA、主成分分析PCA对居民消费结构数据可视化分析
全文链接:https://tecdat.cn/?p37952 分析师:Ting Mei 在经济发展的大背景下,居民消费结构至关重要。本文围绕居民消费结构展开深入研究,运用 SPSS25.0 和 R 语言,以因子分析法和主成分分析法对东北三省居民消费价格指…...
高级SQL技巧掌握
高级SQL技巧掌握 在数据驱动的时代,掌握SQL不仅仅是为了解决具体问题,它更像是一把钥匙,帮助你打开数据分析的大门。你准备好提升你的SQL技能了吗?在这篇文章中,我们将一起探索十个必备的高级SQL查询技巧,这些技巧将帮助你更有效率地进行数据处理与分析。 1. 常见表表达…...
数组实例之三子棋的实现(C语言)
目录 前言 一、三子棋实现的逻辑 二、三子棋的实现 2.1文件的创建添加 2.2 test文件基本逻辑 2.2.1菜单的实现 2.2.2菜单的选择 2.2.3game函数棋盘的实现 2.3game.c文件的编写 2.3.1初始化函数的模块 2.3.2棋盘打印的模块 2.3.3实现棋盘界面的打印 2.3.4实现玩家下…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
