安装 Node.js、npm

安装 nodejs

安装Node.js的最简单的方法是通过软件包管理器。

Node.js官网:https://nodejs.org/en/download/
请添加图片描述

cd /usr/local/src/

wget -c https://nodejs.org/dist/v18.16.0/node-v18.16.0-linux-x64.tar.xz
xz -d node-v18.16.0-linux-x64.tar.xz
tar -xf node-v18.16.0-linux-x64.tar

mv node-v18.16.0-linux-x64 /usr/local/nodejs

创建软连接

ln -s  /usr/local/nodejs/bin/node /usr/local/bin/node
ln -s  /usr/local/nodejs/bin/npm /usr/local/bin/npm
ln -s  /usr/local/nodejs/bin/npx /usr/local/bin/npx

/bin:存放所有用户皆可用的系统程序,即普通的基本命令,如:cat,ls,chmod等。
/sbin:存放超级用户才能使用的系统程序,即基本的系统命令,如:shutdown,reboot等。
/usr/bin:存放所有用户都可用的应用程序,一般是已安装软件的运行脚本,如:free、make、wget等。
/usr/sbin:存放超级用户才能使用的应用程序,一般是与服务器软件程序命令相关的,如:dhcpd、 httpd、samba等。
/usr/local/bin:存放所有用户都可用的与本地机器无关的程序,即第三方软件程序。
/usr/local/sbin:存放超级用户才能使用的与本地机器无关的程序。

查看版本号

若能显示版本号,证明安装正常。

node -v
npm -v

此时npm已经成为全局使用的工具。

nodejs目录结构:

├── bin
│ ├── node
│ ├── npm -> …/lib/node_modules/npm/bin/npm-cli.js
│ └── npx -> …/lib/node_modules/npm/bin/npx-cli.js
├── CHANGELOG.md
├── include
│ └── node
├── lib
│ └── node_modules
│ └── npm
├── LICENSE
├── README.md
└── share
├── doc
├── man
└── systemtap

npx工具

npx是一个工具,npm v5.2.0引入的一条命令(npx),一个 npm 包执行器,指在提高从 npm 注册表使用软件包时的体验,npm 使得它非常容易地安装和管理托管在注册表上的依赖项,npx 使得使用 CLI 工具和其他托管在注册表。它大大简化了一些事情。

npx有非常智能的识别模块,如果模块存在,就使用。如果不存在,就临时下载,用完就删除。使用某个 node 模块的时候,npx 根本不用关心是否安装过了。

npx:侧重于执行命令的,执行某个模块命令。虽然会自动安装模块,但是重在执行某个命令。
npm:侧重于安装或者卸载某个模块的。重在安装,并不具备执行某个模块的功能。

卸载 npm

若处于特殊原因,需要卸载 npm 的时候,可以使用下面命令来卸载。

npm uninstall npm -g
rm -f /usr/local/bin/npm
rm -f /usr/local/bin/npx
rm -f /root/.npmrc

rm -rf /usr/local/nodejs
# 查看所有包含 npm 的遗留文件
find /root -name npm*
find /usr/local -name npm*

# 查看所有包含 npx 的遗留文件
find /root -name npx*
find /usr/local -name npx*
# 删除所有包含 npm 的文件及目录
find /root -name npm* | xargs rm -rf      
find /usr/local -name npm* | xargs rm -rf 

# 删除所有包含 npx 的文件及目录
find /root -name npx* | xargs rm -rf      
find /usr/local -name npx* | xargs rm -rf 

升级 npm

npm install npm -g

npm常用命令

npm init:会引导你创建一个package.json文件,包括名称、版本、作者这些信息等。
npm install <packName>:安装nodejs的依赖包。
npm install <packName>-g:将包安装到全局环境中。
npm install <packName>--save:安装的同时,将信息写入 package.json 中。项目路径中如果有package.json文件时,直接使用 npm install 方法就可以根据 dependencies 配置安装所有的依赖包。
npm uninstall <packName>:移除。
npm remove <packName>:移除。npm uninstall <packName>别名。
npm update <packName>:更新。
npm ls:列出当前安装的了所有包。
npm root:查看当前包的安装路径。
npm root -g:查看全局的包的安装路径。
npm help:帮助,如果要单独查看install命令的帮助,可以使用的npm help install。
# 查看当前 npm 工具全局安装路径
npm prefix -g 
/usr/local/nodejs

# 查看 root 用户,全局配置的包下载的位置
npm root -g
/usr/local/lib/node_modules

#查看 npm 配置文件路径
npm config get userconfig
/root/.npmrc

# 查看 npm 缓存目录:
npm config get cache
root 用户的缓存目录:/root/.npm。普通用户的缓存目录:~/.npm。
# 查看配置列表
npm config ls 

# 查看镜像源
npm config get registry

# 全局切换官方镜像源
npm config set registry https://registry.npmjs.org

# 全局切换淘宝镜像源
npm config set registry https://registry.npmmirror.com

# 全局切换华为镜像源
npm config set registry https://repo.huaweicloud.com/repository/npm/
# 显示 npm install 下载安装详细日志
npm config set loglevel info 

# 恢复初始的简洁状态
npm config set loglevel notice 

查看全局已安装的包

查看全局已安装(-g的意思是global全局安装)。

npm list -g

会发现,会把包的所有依赖也显示出来

加上层级控制显示深度:--depth0

npm list -g --depth 0

这样就只会查到安装的包,并不会查到包的依赖。

查看项目中已安装过的包

查看当前项目已安装包(项目跟目录必须有package.json文件)

npm list

同样也是会把所有包的依赖显示出来。同上,加上–depth0就好了。

npm list --depth 0

如果只想显示生产环境依赖的包

npm list --depth 0 --production

只显示开发环境依赖的包

npm list --depth 0

查看某个模块包是否安装

npm list packName

注:这些命令中的参数list,可以简写为ls

卸载已经安装过的包

npm remove packName

查看 npm 服务器上包的信息

比如查看 vue 框架,发行版本的信息

# 查看 vue 所有版本
npm info vue
npm view vue versions

# 查看 vue 最新版本
npm view vue version

清除 npm 缓存

在 npm5+版本中,npm 缓存通过将完整性不匹配视为缓存丢失来自修复损坏问题。因此,从缓存中提取的数据保证是有效的。如果你想确保一切都是一致的,那就用npm cache verify吧。删除缓存只会让 npm 运行得更慢,而且不太可能纠正你可能遇到的任何问题!

另一方面,如果你在调试安装程序的问题,或者依赖于写入空缓存的时间的竞争条件,你可以使用npm install --cache /tmp/empty-cache来使用一个临时缓存,而不是使用实际的缓存。如果您确定要删除整个缓存,请使用–force重新运行此命令。

npm7+版本,不需要清除缓存,若确实需要使用如下命令:

npm cache verify

npm7-版本,清除缓存命令:

npm cache clean
# 强制清除缓存
npm cache clean -—force

# 强制清除缓存,简写
npm cache clean -f

npm install命令

在项目package.json配置中,有两个节点:

dependencies:生产环境依赖。此配置下的依赖包,会被打包发布到生产环境的。不仅仅在开发环境需要运行,还需要在生产环境运行的依赖包。

devDependencies:开发环境依赖。此配置下的依赖包,只用于开发环境,不用于生产环境,不会被打包。仅仅在开发环境需要运行,不需要在生产环境运行的依赖包。例如:进行单元测试之类的包。

在 npm 命令中,install可以简写为i。例如:npmi<packName>
版本 npm5+后,npm install <packName>,等价于npm install --save<packName>

在项目根目录下,执行npm install之后。npm 会安装以下的步骤执行安装:

第一步:检查配置

检查和获取 npm 的配置。配置文件优先级为:项目级的.npmrc 文件>用户级的.npmrc 文件>全局级的.npmrc 文件>npm 内置的.npmrc 文件。

第二步:安装依赖

如果项目根目录下,存在package-lock.json文件。会检查package-lock.json和package.json声明的依赖是否兼容(package-lock.json版本在 package.json 指定的版本范围内):

如果兼容,直接使用package-lock.json中的信息,通过网络从网络远端资源仓库或者本地缓存(~/.npm)中加载依赖。即使此时package.json中有新的版本,还是会根据package-lock.json下载。
如不兼容,package-lock.json将会更新到兼容package.json的版本。然后下载安装。
如果项目根目录下,没有package-lock.json文件。那么会根据package.json文件中的配置,递归构建依赖树,

然后就会根据构建好的依赖,去下载完整的依赖资源。在下载的时候,会检查缓存(~/.npm)中,有没有相关的资源包:

如果存在,直接解压到项目node_modules文件中。
如果没有,通过网络从网络远端资源仓库,下载此资源包,并校验包的完整性。然后添加到缓存(~/.npm)中,同时也解压到项目node_modules中。

第三步:生产版本号文件

最后,生成package-lock.json文件。

package.json:记录当前项目所依赖模块的版本信息,更新模块时锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本。
package-lock.json:记录了项目node_modules目录下,所有模块(包)的名称、版本号、下载地址、及这个模块又依赖了哪些依赖。npm5 以后。package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块。

Node.js的应用场景

目前前端开发的库都是以node包的形式进行管理
npm、yarn、pnpm工具成为前端开发使用最多的工具
使用Node.js作为web服务器开发、中间件、代理服务器 大量项目需要借助Node.js完成前后端渲染的同构应用
资深前端工程师会使用node为项目编写脚本工具
使用Electron来开发桌面应用程序和小工具

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用react+vite开发项目时候,部署上线后刷新页面无法访问解决办法

说一下我这边的环境和使用的路由模式&#xff1a;vitereactBrowserRouter路由模式&#xff0c;所以如果你和我一样的话&#xff0c;可以试试我的这种解决办法&#xff0c;我是将项目打包后直接丢到服务器上的目录里面&#xff0c;然后配置nginx直接访问根目录。 我的nginx配置…

Android 模拟器检测

文章目录 普遍检测代码如下&#xff1a;推荐模拟器检测方法&#xff1a;设备信息检测代码&#xff1a;蓝牙检测代码&#xff1a;光传感器检测代码&#xff1a;CPU检测代码&#xff1a; 最近看到某客户端有一个检测模拟器的方法&#xff0c;我正常手机结果被判断是模拟器了&…

Python 自学(一) 之语言基础

目录 0. 前言 1. 声明python解释器 2. 变量的类型 type() id() P35 3. 类型转换 str() P37 4. 换行 r"" P40 5. 常用类型转换函数 P41 6. 特殊的运算符 // ** P42 7. 特殊的比较运算符 0 < a <100 P45 8. 函数输入 input() P51 9. print…

Windows使用IIS服务搭建WebDAV站点结合内网穿透公网访问

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结&#xff1a; 自己用Windows Server搭建了家用NAS主机&…

基于mediapipe的人体姿态估计模型——没有GPU依然速度飞起

关于人体姿态检测模型,我们前期也介绍过了很多相关的模型,比如基于Yolo-NAS的姿态检测以及基于YOLOv8的人体姿态检测,而人体姿态估计一直是计算机视觉任务中比较重要的一个模型。但是基于YOLO系列的人体姿态检测模型需要较大的算力,且很难在CPU模型上快速的运行。 基于medi…

【漏洞复现】OpenSSH ProxyCommand命令注入漏洞(CVE-2023-51385)

文章目录 前言一、漏洞背景二、漏洞详情三、影响范围四、漏洞验证 前言 OpenSSH存在命令注入漏洞&#xff08;CVE-2023-51385&#xff09;&#xff0c;攻击者可利用该漏洞注入恶意Shell字符导致命令注入。 一、漏洞背景 OpenSSH 是 SSH &#xff08;Secure SHell&#xff09…

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现 之前&#xff0c;我们依据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;提出了新的YOLOV1架构&#xff0c;并解决前向推理过程中的两个问题&#xff0c;继续按照此书进行YOLOV1的复现。 经典目标…

Qt(三):udp组播的发送与接收

1. 创建UDP套接字 使用QUdpSocket类创建一个UDP套接字。 udpSendnew QUdpSocket(this);udpRecenew QUdpSocket(this); 2. 绑定套接字 绑定套接字到一个本地地址和端口。可以使用bind()函数来完成。 如果要在组播中发送数据&#xff0c;可以将套接字绑定到一个通配符地址&#…

m1芯片电脑上的paragon15如何安装激活 m1芯片电脑上ntfs for mac如何安装

Paragon NTFS软件在M1芯片电脑上安装之后&#xff0c;最后一步会让我们“允许加载第三方内核扩展”&#xff0c;具体如下图所示。 图1&#xff1a;允许加载第三方内核扩展 按照图中提示“单击此处“&#xff0c;然后打开安全与隐私。接下来依次点击小锁标志进行解锁&#xff0c…

Abstract Factory抽象工厂模式(对象创建)

抽象工厂模式&#xff1a;Abstract Factory 链接&#xff1a;抽象工厂模式实例代码 解析 目的 在软件系统中&#xff0c;经常面临着“一系列相互依赖的对象工作”&#xff1b;同时&#xff0c;由于需求的变化&#xff0c;往往存在更多系列对象的创建工作。 如何应对这种变化…

EBDP:解锁大数据的奥秘✨

大数据时代已经来临&#xff0c;你是否也想掌握这门“显学”&#xff1f;&#x1f31f; EBDP&#xff0c;这个让众多专业人士趋之若鹜的认证&#xff0c;究竟有何魅力&#xff1f;今天就带你一探究竟&#xff01; &#x1f31f;EBDP&#xff1a;大数据的“敲门砖”&#x1faa…

无线路由器的五种工作模式:

1.Router&#xff0c;即无线路由模式&#xff0c;这也是我们最常用的一种工作方式&#xff0c;一般家里宽带连接&#xff0c;将宽带猫连接在无线路由的WAN口上&#xff0c;然后做拨号帐号设置&#xff0c;就用这个模式即可。 在Router&#xff08;无线路由&#xff09;模式下&a…

预售价80万元的ET9,能否拯救蔚来【不断恶化】的财务业绩?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 发布新车型 12月23日&#xff0c;蔚来&#xff08;NIO&#xff09;的创始人李斌在西安NIO DAY上发布了蔚来自成立以来售价最高的车型--ET9。 据猛兽财经了解&#xff0c;ET9定位于行政旗舰&#xff0c;预售价为80万元&…

【C语言】Windows上用GTK写GUI程序

要使用GTK开发一个Windows图形用户界面程序&#xff0c;需要首先设置GTK开发环境。这通常包括安装GTK库和它的依赖&#xff0c;以及配置编译器和工具链。可以选择使用纯C语言和GTK库或者使用支持GTK绑定的其他语言&#xff0c;如Python、C或Rust。 1. 安装GTK开发库 在Window…

QT上位机开发(绘图软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 稍微复杂一点的软件&#xff0c;一般都是带有绘图功能。绘图的意义&#xff0c;不仅仅是像CAD一样&#xff0c;可以进行模型的设计、比对和调试。它…

mysql之四大引擎、账号管理以及建库

一.数据库存储引擎 1.1存储引擎的查看 1.2InnoDB 1.3MyISAM 1.4 MEMORY 1.5 Archive 二.数据库管理 2.1元数据库简介 2.2元数据库分类 2.3 相关操作 2.4 MySQL库 三.数据表管理 3.1三大范式 3.2 基本数据类型 3.2.1优化原则 3.3 整形 3.4 实数 3.5 字符串 3.6 text&…

Java反射机制和动态代理

反射和动态代理 反射前言获取class对象的方式反射获取构造方法反射获取成员变量反射获取成员方法实例 动态代理 反射 前言 什么是反射&#xff1f; 反射允许对成员变量&#xff0c;成员方法和构造方法的信息进行编程访问。 为什么用反射 / 反射的作用&#xff1f; 可以轻易地获…

Scene Creator

场景创建器是一个方便、易于使用的编辑工具&#xff0c;旨在简化创建新场景的过程。使用场景创建器&#xff0c;您可以选择一个模板场景&#xff0c;定义一个目录来存储您的场景&#xff0c;并在需要时自动将新场景添加到构建中。 下载&#xff1a; ​​Unity资源商店链接 资…

微软好听的tts语音包下载,粤语,韩语,日语

微软的 tts 语音库&#xff0c;都是离线的&#xff0c;所以速度非常快 但资源比较少&#xff0c;比如粤语&#xff0c;韩语&#xff0c;日语 我发现一个老牌语音技术供应商。 资源丰富&#xff0c;可自行下载免费或收费语音包。 网站&#xff1a;正版用户专用配套播音员下载…

im6ull学习总结(三-2)文字显示中文字符

承接上篇文章 中文字符的点阵显示 使用点阵字库时&#xff0c;中文字符的显示原理跟 ASCII 字符是一样的。要注意的地方在于中文的编码&#xff1a;在 C 源文件中它的编码方式是 GB2312 还是 UTF-8&#xff1f;编译出的可执行程序&#xff0c;其中的汉字编码方式是 GB2312 还…