npm一篇通

npm 是什么?

npm,全称Node Package Manager,是随Node.js一起分发的开源包管理系统,也是JavaScript生态中最流行的依赖管理工具。npm可以用于安装、管理和发布JavaScript模块。

对于Java后端开发人员来说,可以将其等同于JavaScript世界的Mavan。

npm具有以下特点和功能:

  1. 包管理:npm可以用来安装、更新和卸载JavaScript模块。它提供了一个命令行界面,使得包的安装和管理变得非常简单和方便。

  2. 包发布:npm允许开发者将自己编写的JavaScript模块发布到npm的注册表中,以便其他人可以方便地安装和使用。开发者可以通过创建一个package.json文件来描述模块的信息和依赖关系,并使用npm publish命令将模块发布到注册表中。

  3. 依赖管理:npm可以自动解析和处理模块之间的依赖关系。当安装一个模块时,npm会自动下载并安装其所依赖的其他模块。开发者可以在package.json文件中指定模块的依赖关系,npm会根据这些信息自动安装所需的模块。

  4. 脚本执行:npm还提供了一个脚本执行的功能,开发者可以在package.json文件中定义一些脚本命令,比如启动服务、执行测试等。通过npm run命令,开发者可以方便地执行这些脚本。

  5. 版本控制:npm使用语义化版本控制(Semantic Versioning)对模块进行版本管理。每个模块都有一个版本号,开发者可以根据版本号来指定模块的依赖关系,确保项目的稳定性和一致性。

  6. 安全性:npm具有一些安全机制,例如通过检查模块的SHA-1哈希值来确保模块的完整性。npm还提供了一些安全工具,用于检测和修复潜在的安全漏洞。

npm的安装

由于npm是Node.js的一部分,因此安装Node.js时,npm通常也会被自动安装。

以下是安装Node.js和npm(如果尚未安装)的基本步骤:

  1. 访问Node.js官方网站

    • 打开浏览器,并访问Node.js的官方网站(https://nodejs.org/)。
  2. 下载Node.js安装包

    • 在网站上,会看到一个“下载”按钮或类似的链接。点击它,选择适合操作系统的版本(Windows、Mac或Linux)。
    • 下载完成后,会得到一个安装包文件(如.msi、.pkg或.tar.gz等)。
  3. 安装Node.js

    • 双击下载的安装包文件,按照屏幕上的提示进行安装。
    • 安装过程中,可能需要选择安装位置、确认用户权限等。
    • 安装完成后,Node.js和npm通常都会被自动安装在系统上。
  4. 验证安装

    • 打开命令行工具(在Windows上是CMD或PowerShell,在Mac或Linux上是Terminal)。
    • 输入node -v命令,然后按Enter键。如果Node.js已正确安装,该命令将显示安装的Node.js版本号。
    • 输入npm -v命令,然后按Enter键。如果npm已正确安装,该命令将显示安装的npm版本号。

npm的使用

可以使用npm来安装、更新和删除Node.js应用程序中的包了。

  • 使用npm install <package-name>命令来安装一个包
  • 使用npm uninstall <package-name>命令来卸载一个包,

除了安装和删除依赖包之外, npm 的常用的命令有:

  1. 初始化项目
    • npm init:创建一个新的package.json文件,该文件用于存储项目的元数据和依赖信息。执行命令后,它会提示你输入项目名称、版本、描述等信息,或者你可以使用npm init -y来快速生成一个带有默认值的package.json文件。
  2. 安装依赖
    • npm install <package-name>:安装指定名称的npm包作为项目的依赖项。默认情况下,这些依赖项会被添加到package.json文件的dependencies字段中。
    • npm install <package-name> --save-dev:安装指定名称的npm包作为项目的开发依赖项(仅用于开发环境)。这些依赖项会被添加到package.json文件的devDependencies字段中。
    • npm install(无参数):如果package.json文件已经存在,该命令会根据文件中的dependenciesdevDependencies字段安装所有依赖项。
  3. 卸载依赖
    • npm uninstall <package-name>:卸载指定名称的npm包。如果它是dependenciesdevDependencies中的一部分,那么相应的条目也会从package.json文件中删除。
  4. 更新依赖
    • npm update <package-name>:更新指定名称的npm包到最新版本。
    • npm update(无参数):更新package.json文件中列出的所有依赖项到最新版本。
  5. 查看依赖树
    • npm list:列出当前项目中安装的所有包及其依赖关系树。
  6. 运行脚本
    • npm run <script-name>:运行package.json文件中scripts字段下定义的特定脚本。例如,如果package.json中有一个"start": "node app.js"的脚本,那么你可以通过npm start来运行它。
  7. 搜索包
    • npm search <package-name>:搜索npm仓库中指定名称的包。
  8. 查看包信息
    • npminfo <package-name>:查看指定npm包的详细信息。
  9. 全局安装
    • npm install <package-name> -g:全局安装指定名称的npm包。全局安装的包可以在任何地方通过命令行直接使用。
  10. 查看npm配置
    * npm config ls:查看npm的配置信息。
    * npm config set <key> <value>:设置npm的配置项。
  11. 其他
    * npm install -g npm:更新npm到最新版本(尽管通常建议使用包管理器的更新命令,如apt、yum或brew)。
    * npm stop:停止正在运行的Node.js应用程序(但这并不是npm的原生命令,而是通常通过package.json中的脚本来定义)。

高级: 全局安装路径和缓存位置的配置

npm(Node Package Manager)的全局安装路径和缓存位置是npm的两个重要配置选项,它们分别决定了全局安装的npm包存储在哪里以及npm缓存数据的位置。

全局安装路径(Global Install Path)

全局安装路径是指npm全局安装模块时的存储位置。当在命令行中使用带有-g(或--global)参数的npm install命令安装一个npm包时,这个包会被安装到全局安装路径下。全局安装的包通常可以被系统中的任何Node.js项目所使用,而不仅仅是安装它们的那个项目。

如何配置全局安装路径

可以通过npm的配置命令来设置全局安装路径。在命令行中执行以下命令:

npm config set prefix <path>

其中<path>是想要设置的全局安装路径。例如,如果想要将全局安装路径设置为/usr/local/npm-global,可以执行:

npm config set prefix /usr/local/npm-global

注意:更改全局安装路径后,可能需要更新你的系统PATH环境变量,以便包含新的全局安装路径下的bin目录,从而能够在命令行中直接运行全局安装的命令。

缓存位置(Cache Location)

npm在下载和安装npm包时,会将包的数据缓存到本地,以便在将来能够更快地获取这些包。缓存位置就是这些缓存数据存储的地方。

如何配置缓存位置

同样,你可以通过npm的配置命令来设置缓存位置。在命令行中执行以下命令:

npm config set cache <path>

其中<path>是你想要设置的缓存位置。例如,如果你想要将缓存位置设置为/home/user/.npm-cache,你可以执行:

npm config set cache /home/user/.npm-cache

注意:更改缓存位置通常不需要更新其他环境变量或配置。

验证配置

可以使用npm config list命令来查看当前的npm配置,包括全局安装路径和缓存位置。这个命令会列出npm的所有配置选项和它们的值。

注意事项

  • 在修改全局安装路径或缓存位置之前,最好先确保你了解这些更改的含义和潜在影响。
  • 如果你在多个项目或机器上共享npm配置,那么可能需要考虑使用.npmrc文件或环境变量来管理这些配置,以便在不同的环境中保持一致。
  • 如果你在修改配置后遇到任何问题,可以尝试使用npm config delete <key>命令来删除特定的配置选项,并恢复到npm的默认设置。其中<key>是你要删除的配置选项的名称,例如prefixcache


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

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

相关文章

Python面试十问

一、深浅拷贝的区别&#xff1f; 浅拷⻉&#xff1a; 拷⻉的是对象的引⽤&#xff0c;如果原对象改变&#xff0c;相应的拷⻉对象也会发⽣改变。 深拷⻉&#xff1a; 拷⻉对象中的每个元素&#xff0c;拷⻉对象和原有对象不在有关系&#xff0c;两个是独⽴的对象。 浅拷⻉(c…

python和R对比记忆

PythonRMySQL数据类型 整型int 浮点型float 字符串str 布尔型bool 【特殊】None类型和复数类型 【用户自定义】类和对象 数值型 字符型 逻辑型 因子型factor[针对定性数据] 【特殊】时间序列类型time series、日期类型date、日期时间类型datetime 【用户自定义】S3对象、S4对…

探索高级聚类技术:使用LLM进行客户细分

在数据科学领域&#xff0c;客户细分是理解和分析客户群体的重要步骤。最近&#xff0c;我发现了一个名为“Clustering with LLM”的GitHub仓库&#xff0c;它由Damian Gil Gonzalez创建&#xff0c;专门针对这一领域提供了一些先进的聚类技术。在这篇文章中&#xff0c;我将概…

安卓手机APP开发__媒体开发部分__处理在声音输出中的变化

安卓手机APP开发__媒体开发部分__处理在声音输出中的变化 目录 概述 使用音量控制 程序化地控制流的音量 在固定音量的设备上工作 不要很大声的噪音 概述 用户期望能够控制一个音频APP的音量大小。标准的行为包括 使用音量控制的能力&#xff08;在设备上的按钮或者是用…

Python 解读:如何使用 ceil 和 floor 函数进行数学运算

在 Python 中&#xff0c;ceil 和 floor 函数是用于数学计算的两个非常重要的函数&#xff0c;它们分别表示对一个数执行向上取整和向下取整的操作。这两个函数位于 Python 的math模块中&#xff0c;因此在使用前需要先导入此模块。 1. ceil函数 ceil函数会将一个数向上舍入到…

python烟花代码

在Python中&#xff0c;可以使用多种方式来模拟烟花效果&#xff0c;其中一种常见的方法是使用turtle图形库来绘制。以下是一个简单的示例&#xff0c;展示了如何使用turtle来创建一个烟花效果的动画&#xff1a; import turtle import random# 设置屏幕和背景 screen turtle…

【数据库主从架构】

【数据库主从架构】 1. 什么是数据库的主从架构1.1 主从复制1.1.1 MySQL的主从主从复制技术三级目录 1. 什么是数据库的主从架构 随着公司业务线的增多&#xff0c;各种数据都在迅速增加&#xff0c;并且数据的读取流量也大大增加&#xff0c;就面临着数据安全问题&#xff0c;…

Mac 电脑 vscode 终端提示 zsh: command not found

问题 Mac上装好node后&#xff0c;使用npm install安装依赖时&#xff0c;终端却提示zsh: command not found 解决方案 【1】在&#xff5e;目录下创建.zshrc文件; 【2】编辑source ~/.bash_profile至.zshrc文件中; 【3】source ~/.zshrc; cd ~ touch .zshrc echo source ~…

06.Git远程仓库

Git远程仓库 #仓库种类&#xff0c;举例说明 github gitlab gitee #以这个仓库为例子操作登录码云 https://gitee.com/projects/new 创建仓库 选择ssh方式 需要配置ssh公钥 在系统上获取公钥输入命令&#xff1a;ssh-keygen 查看文件&#xff0c;复制公钥信息内…

【设计模式】16、state 状态模式

文章目录 十六、state 状态模式16.1 自动购物机16.1.1 vending_machine_test.go16.1.2 vending_maching.go16.1.3 state.go16.1.4 no_good_state.go16.1.5 has_good_state.go 16.2 player16.2.1 player_test.go16.2.2 player.go16.2.3 state.go16.2.4 stopped_state.go16.2.5 p…

go的grpc的三种流模式通信

go的grpc的三种流模式通信 1、grpc通信模式简介2、stream.proto文件3、服务端代码 server.go4、客户端代码client.go5、测试说明 1、grpc通信模式简介 grpc的数据传输可以分为4种模式&#xff1a; 简单模式 (一元调用) 服务端流模式 (服务端返回实时股票数据给前台) 客户端流模…

kubernetes中使用ELK进行日志收集

目录 一、需要收集哪些日志 1、kubernetes集群的系统组件日志 2、应用日志 二、日志收集方案ELK 1、收集日志&#xff1a;Logstash 2、存储日志&#xff1a;Elasticsearch 3、展示日志&#xff1a;Kibana 三、安装elk 1、下载安装包 2、创建用户并切换到新用户 3、上…

npm许可证检查

node开发做项目&#xff0c;很少有人去纯手工打造&#xff0c;大多是采用一些开源框架&#xff0c;还会使用前人做好的轮子&#xff0c;所以咱们的项目文件里&#xff0c;除了自己编写的js文件&#xff0c;还会带有一些拿来主义的npm模块&#xff0c;从其他开源发布网站上下载的…

2024-05-02 商业分析-杭州小万科技-商业模式分析

摘要: 对杭州小万科技的商业模式进行分析,以对其做出客观的评估。 杭州小万科技的资料: 杭州小万科技有限公司 - 企知道 (qizhidao.com) 杭州小万科技有限公司网站备案查询 - 天眼查 (tianyancha.com) 杭州小万科技有限公司 - 爱企查 (baidu.com) ​ 2023年年报:

SMB 协议详解之-TreeID原理和SMB数据包分析技巧

在前面分析SMB协议数据包的过程中,这里,可以看到在SMB协议中存在很多的ID,即Unique Identifiers。那么这些ID表示什么含义?在实际分析数据包的过程中如何根据这些ID进行过滤分析?本文将介绍SMB/SMB2中的tree id ,并介绍如何通过tree id 快速的分析SMB数据包中各种命令交互…

Django响应‘表单请求’过程

&#xff08;1&#xff09;用户通过自己的浏览器&#xff08;客户端&#xff09;第一次向服务器发出含有表单页面的请求&#xff0c;Django会创建一个未绑定数据的表单实例&#xff08;例如form LoginForm(), form实例就是未绑定实例&#xff09;&#xff0c;即空表单&#xf…

现代JavaScript:对ES6+的深入讲解,新型的JS特性以及怎样在项目中使用它们

现代JavaScript&#xff0c;也就是ES6&#xff08;ECMAScript 6&#xff09;和更高版本&#xff0c;引入了很多新的语言特性来增强JavaScript的编程能力。以下为一些关键的新特性及其在项目中的使用&#xff1a; 1、let 和 const 关键字&#xff1a; 在ES6之前&#xff0c;我们…

使用jdbc方式操作ClickHouse

1、创建测试表&#xff0c;和插入测试数据 create table t_order01(id UInt32,sku_id String,total_amount Decimal(16,2),create_time Datetime ) engine MergeTreepartition by toYYYYMMDD(create_time)primary key (id)order by (id,sku_id);insert into t_order01 values …

MR混合现实情景实训教学系统在商务接待课堂上的应用

随着科技的不断发展&#xff0c;MR混合现实情景实训教学系统已经逐渐应用于商务接待课堂。这种新型的实训教学系统将虚拟现实技术与现实环境相结合&#xff0c;为商务接待课堂带来了全新的教学方式和体验。 首先&#xff0c;MR混合现实情景实训教学系统能够为学生提供真实的商务…

Agent AI智能体:如何借助机器学习引领科技新潮流

文章目录 &#x1f4d1;前言一、Agent AI智能体的基本概念二、Agent AI智能体的技术进步2.1 机器学习技术2.2 自适应技术2.3 分布式计算与云计算 三、Agent AI智能体的知识积累3.1 知识图谱3.2 迁移学习 四、Agent AI智能体的挑战与机遇4.1 挑战4.2 机遇 小结 &#x1f4d1;前言…