NPM包的安装、更新、卸载

目录

1、下载安装全局包

2、解决全局安装包时的EACCES权限错误

2.1 重新安装NPM

2.2 手动更改npm的默认目录

3、更新从注册表下载的包

3.1 更新本地包

3.2 更新全局安装的软件包

3.3 确定哪些全局包需要更新

3.4 更新单个全局包

3.5 更新所有全局安装的软件包

4、在项目中使用NPM包

4.1 在项目中使用未限定作用域的包

Node.js模块

package.json文件

4.2 在项目中使用限定了作用域的包

Node.js模块

package.json文件

5、使用不推荐使用的软件包

6、卸载包和依赖项

6.1 卸载本地软件包

从node_modules目录中删除本地包

无作用域包 

 作用域包 

6.2 删除本地包而不从package.json中删除

6.3 卸载全局软件包

无作用域包 

作用域


1、下载安装全局包

全局安装包允许您将包中的代码用作本地计算机上的一组工具。

要全局下载和安装软件包,请在命令行上运行以下命令:

npm install -g <package_name>

提示:如果您使用的是npm 5.2或更高版本,我们建议使用npx全局运行包。

如果出现EACCES权限错误,您可能需要使用版本管理器重新安装npm,或者手动更改npm的默认目录。

2、解决全局安装包时的EACCES权限错误

如果在尝试全局安装软件包
时看到EACCES错误,您可以:

  • 使用节点版本管理器重新安装npm(推荐)
  • 手动更改npm的默认目录

 一般情况下是由于系统目录权限导致的,例如在系统盘(C盘)可能会有这种问题,这时候我们安装在C盘之外的其他盘下面(例如:D盘目录下)就可以解决。

2.1 重新安装NPM

在安装节点版本管理器之前,您不需要删除当前版本的npm或Node.js。

安装方式可以参考Node.js的安装

2.2 手动更改npm的默认目录

注意:本节不适用于Windows系统,Windows 最好重新安装一下,换一个安装目录。

1、先备份一下原来npm全局目录

2、在命令行上,在主目录中,为全局安装创建一个目录:

mkdir ~/.npm-global

 3、配置npm以使用新的目录路径:

npm config set prefix '~/.npm-global'

4、在您喜欢的文本编辑器中,打开或创建一个~/.profile文件并添加以下行:

export PATH=~/.npm-global/bin:$PATH

5、在命令行中,更新系统变量:

source ~/.profile

6、要测试您的新配置,请在不使用sudo的情况下全局安装一个软件包:

npm install -g jshint

您可以使用相应的ENV变量(例如:如果您不想修改~/.profile):

NPM_CONFIG_PREFIX=~/.npm-global

最后,如果不想重新安装原来之前的包,也可以把之前的包,拷贝到当前目录下。

3、更新从注册表下载的包

更新从注册表下载的本地和全局包有助于保持代码和工具的稳定、可用和安全。

3.1 更新本地包

我们建议定期更新项目所依赖的本地包,以便在改进其依赖项时改进代码。

1、切换到项目的根目录,并确保它包含package.json文件:

cd /path/to/project

2、在项目根目录下,运行update命令:

npm update

3、要测试更新,请运行outdated命令
。不应该有任何输出。

npm outdated

3.2 更新全局安装的软件包

注意:如果您使用的是npm 版本过低,在更新包的会报错,建议更新到新版本的npm,然后再更新所有过时的全局包。

请考虑升级到最新版本的npm:

npm install npm@latest -g

3.3 确定哪些全局包需要更新

要查看哪些全局包需要更新,请在命令行上运行:

npm outdated -g --depth=0

3.4 更新单个全局包

要更新单个全局包,请在命令行上运行:

npm update -g <package_name>

3.5 更新所有全局安装的软件包

要更新所有全局包,请在命令行上运行:

npm update -g

4、在项目中使用NPM包

一旦你在node_modules中安装了一个包
,你就可以在你的代码中使用它了。

4.1 在项目中使用未限定作用域的包

Node.js模块

如果你正在创建一个Node.js模块,你可以在你的模块中使用一个包,方法是将它作为参数传递给require函数。

var deepMerge = require('deepmerge')
var test = deepMerge.all([[10, 20, 30], [40, 50]])
console.log('test: ', test);
// test:  [ 10, 20, 30, 40, 50 ]

package.json文件

package.json中,在dependencies下列出包。您可以选择包含语义版本

{"dependencies": {"package_name": "^1.0.0"}
}

4.2 在项目中使用限定了作用域的包

要使用有作用域的包,只要在使用包名的任何地方包含作用域即可。

Node.js模块

var projectName = require("@scope/package-name")

package.json文件

package.json中:

{"dependencies": {"@scope/package_name": "^1.0.0"}
}

5、使用不推荐使用的软件包

如果您安装了一个软件包,并且它打印了一条弃用消息,我们建议您按照说明操作(如果可能)。这可能意味着更新到新版本,或者更新包依赖项。

弃用消息并不总是意味着软件包或版本不可用;这可能意味着该包未被维护并且将不再由发布者更新。 

6、卸载包和依赖项

如果您不再需要在代码中使用某个包,我们建议您卸载它并将其从项目的依赖项中移除。

6.1 卸载本地软件包

从node_modules目录中删除本地包

要从node_modules目录中删除包,请在命令行中使用uninstall命令
。如果包有作用域,则包括作用域。

这将卸载一个包,完全删除npm代表它安装的所有内容。它还从package.json中的dependencies、devDependencies、optionalDependencies和peerDependencies对象中删除包。此外,如果您有npm-shrinkwrap.json或package-lock.json,npm也会更新这些文件。

无作用域包 

npm uninstall <package_name>

 作用域包 

npm uninstall <@scope/package_name>

6.2 删除本地包而不从package.json中删除

使用--no-save将告诉npm不要从package.jsonnpm-shrinkwrap.jsonpackage-lock.json文件中删除包。

--save-S将告诉npm从package.jsonnpm-shrinkwrap.jsonpackage-lock.json文件中删除该包。这是默认值,但如果您的save=false文件中有例如.npmrc,则可能需要使用此选项。

6.3 卸载全局软件包

要卸载未限定作用域的全局软件包,请在命令行中使用带有uninstall标志的-g命令。如果包有作用域,则包括作用域。

无作用域包 

npm uninstall -g <package_name>

作用域

npm uninstall -g <@scope/package_name>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Synopsys EDA数字设计与仿真

参考如下文章安装Synopsys EDA开发工具 https://blog.csdn.net/tugouxp/article/details/132255002?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132255002%22%2C%22source%22%3A%22tugouxp%22%7D Synopsys EDA工具的结构 下…

机器学习终极指南:特征工程(01/2) — 第 -2 部分

西姆兰吉特辛格 一、介绍 欢迎来到“机器学习终极指南”的第二部分。在第一部分中&#xff0c;我们讨论了探索性数据分析 &#xff08;EDA&#xff09;&#xff0c;这是机器学习管道中的关键步骤。在这一部分中&#xff0c;我们将深入研究特征工程&#xff0c;这是机器学习过程…

nginx负载均衡(反向代理)

nginx负载均衡 负载均衡&#xff1a;由反向代理来实现。 nginx的七层代理和四层代理&#xff1a; 七层是最常用的反向代理方式&#xff0c;只能配置在nginx配置文件的http模块当中&#xff0c;而且配置方法名称&#xff1a;upstream模块&#xff0c;不能写在server模块中&#…

app专项测试:app弱网测试

目录 弱网测试背景 网络测试要点 弱网测试关注指标 弱网测试工具 fiddler模拟网络延时场景 网络设置参考 Network Emulator Toolkit模拟网络丢包场景&#xff08;windows网络&#xff09; APP弱网测试 弱网使用工具&#xff1a; app弱网测试要点 APP网络测试要点 网络…

数据结构【哈夫曼树】

哈夫曼树 哈夫曼树的概念哈夫曼树的构造构造算法的实现哈夫曼树应用哈夫曼编码哈夫曼编码的算法实现 哈夫曼树的概念 最优二叉树也称哈夫曼 (Huffman) 树&#xff0c;是指对于一组带有确定权值的叶子结点&#xff0c;构造的具有最小带权路径长度的二叉树。权值是指一个与特定结…

Keburnetes 存储卷 volumes

K8S 的 存储卷 volumes emptyDir 可实现Pod中的容器之间共享目录数据&#xff0c;但emptyDir存储卷没有持久化数据的能力&#xff0c;存储卷会随着Pod生命周期结束而一起删除 &#xff08;一个pod中创建了docker1 docker2两个容器&#xff0c;他们都挂载这个emptyDir&#xff0…

07-2_Qt 5.9 C++开发指南_二进制文件读写(stm和dat格式)

文章目录 1. 实例功能概述2. Qt预定义编码文件的读写2.1 保存为stm文件2.2 stm文件格式2.3 读取stm文件 3. 标准编码文件的读写3.1 保存为dat文件3.2 dat文件格式3.3 读取dat文件 4. 框架及源码4.1 可视化UI设计4.2 mainwindow.cpp 1. 实例功能概述 除了文本文件之外&#xff…

线程记录(2)

1.线程状态 NEW : 分配内存地址&#xff0c;创建线程 RUNNABLE&#xff1a;&#xff08;就绪/运行&#xff09;调用start()之后&#xff08;/没有调度CPU调度&#xff09; BLOCKED&#xff1a;还未拿到锁&#xff0c;等待、被阻塞&#xff08;拿到synchronized失败状态&…

多元最短路(Floyd)

是一个基于动态规划的全源最短路算法。它可以高效地求出图上任意两点之间的最短路 时间复杂度 O(n^3) 状态转移方程 f[i][j]min(f[i][j],f[i][k]f[k][j]) 核心代码 void floyd(){for(int k1;k<n;k)for(int i1;i<n;i)for(int j1;j<n;j)s[i][j]min(s[i][j],s[i][k…

在pycharm中对使用脚本文件运行的程序进行调试

在github中下载的许多项目都可以使用给出的脚本文件运行&#xff0c;本文介绍如果在pycharm中对使用脚本文件运行的程序进行调试的方法。 1.点击 edit configurations 2.选择要debug的py文件&#xff0c;并且填写参数 3.点击运行旁边的debug按钮

elementUi表单恢复至初始状态并不触发表单验证

elementUi表单恢复至初始状态并不触发表单验证 1.场景再现2.解决方法 1.场景再现 左侧是树形列表&#xff0c;右侧是显示节点的详情&#xff0c;点击按钮应该就是新增一个规则的意思&#xff0c;表单内容是没有改变的&#xff0c;所以就把需要把表单恢复至初始状态并不触发表单…

Server - 文字转语音 (Text to Speech) 的在线服务 TTSMaker

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132287193 TTSMaker 是一款免费的文本转语音工具&#xff0c;提供语音合成服务&#xff0c;支持多种语言&#xff0c;包括英语、法语、德语、西班…