【npm】node包管理工具npm的介绍和基础使用

简言

npm 是 Node.js 的 包管理器(Package Manager),它是专门用于管理 Node.js 项目中第三方库的工具。

本文介绍下npm和其使用方法。

npm介绍

npm 是世界上最大的软件注册中心。各大洲的开源开发者都使用 npm 共享和借用软件包,许多组织也使用 npm 管理私人开发。
npm 由三个不同的组件组成:

  • the website(网站) : 使用该 npm官网网站发现软件包、设置配置文件并管理 npm 体验的其他方面。例如,您可以设置组织来管理对公共或私有软件包的访问。
    -the Command Line Interface (CLI)( 命令行界面 (CLI)):通过终端CLI 运行,是大多数开发人员与 npm 交互的方式。
  • the registry(注册表): 注册表是一个大型公共数据库,收录了 JavaScript 软件及其相关元信息。

使用 npm 可以:

  • 为你的应用程序调整代码包,或整合现有的代码包。
  • 下载可立即使用的独立工具。
  • 使用 npx,无需下载即可运行软件包。
  • 在任何地方与任何 npm 用户共享代码。
  • 将代码限制给特定的开发人员。
  • 创建组织,协调软件包维护、编码和开发人员。
  • 使用组织组建虚拟团队。
  • 管理多个版本的代码和代码依赖关系。
  • 更新底层代码时,轻松更新应用程序。
  • 发现解决同一难题的多种方法。
  • 找到正在解决类似问题和开展类似项目的其他开发人员。

npm packages and modules(npm软件包和模块)

npm 注册表包含软件包,其中许多软件包也是 Node 模块,或者包含 Node 模块。

软件包

软件包是由 package.json 文件描述的文件或目录。软件包必须包含 package.json 文件,才能发布到 npm 注册表。
软件包可以是非作用域的,也可以是作用域为用户或组织的,作用域为用户或组织的软件包可以是私有的,也可以是公用的。

模块

模块是 node_modules 目录中的任何文件或目录,可通过 Node.js require() 函数加载,现在推荐用ESM引用了,common.js逐渐成为过去式。

由于不要求模块必须有 package.json 文件,因此并非所有模块都是软件包。只有拥有 package.json 文件的模块才是软件包。

安装npm

npm 是node包管理工具,所以安装node就会自动安装npm(不建议单独安装npm)。 所以安装node即可,强烈建议使用nvm(node版本管理)安装使用node,nvm介绍和使用。

使用 npm

安装node和配置好环境后,在终端输入 npm -v ,显示npm版本即可正常使用。如果提示没找到大概率是环境没配置好。
在这里插入图片描述

创建项目

使用npm最基础的就是创建一个新的node项目(node软件包)了,下面统称为项目。
可以实现创建好一个名为项目名的空文件夹或者打开终端在命令行创建:
projectname为项目名

mkdir projectname

然后cd到新项目路径下,输入npm init 初始化项目生成package.json文件:

cd projectname
npm init 

一直点回车即可,后续可以找到package.json手动更改或者使用默认设置:

npm init -y

在这里插入图片描述

package.json 文件必须包含 "name"和 "version"字段。
name字段包含软件包名称,必须是小写单词,可以包含连字符和下划线。
version"字段的格式必须是 x.x.x,并遵循语义版本准则。

创建 index.js文件。

exports.default = function CheckType() {
  return "这是一个index.js文件";
};

这是commonjs格式的,如果你想创建ESM格式的,请先在package.json下更改type值为module。
在这里插入图片描述
至此一个最简单的项目完成了,你可以发布分享你的项目,以便他人引用。
首先你要在官网注册一个npm账号,
然后在命令行登录:

npm login 

登录成功后,可以输入 npm whoami查看登录用户名:
在这里插入图片描述
然后发布项目:

npm publish

在这里插入图片描述
注意:

  • npm发布需要是npm源,建议使用 nrm 切换源(npx nrm use npm 或者npm下载nrm再切换)
  • 每次publish都要更改项目版本号,在这里插入图片描述
  • 名字冲突会报错,换一个不冲突的名字就行,报错提示:You do not have permission to publish “check-type”. Are you logged in as the correct user?

npm常用命令

  • npm init : 初始化项目生成package.json
  • npm -v : 查看版本
  • npm install 包名 : 下载依赖包
  • npm update : 更新依赖包
  • npm uninstall 包名 : 卸载依赖包
  • npm fund : 列出依赖列表
  • npm help : 获取有关 npm 的帮助
  • npm cache clean : 清除npm 缓存,这个有点不常用,如果不起作用,加上–force 参数强制清除缓存。
  • npm publish : 发布公共软件包。
  • npm login : 登录
  • npm whoami : 显示 npm 用户名
  • npm link : 软链接依赖包
  • npm run-script: 运行自定义命令脚本
  • npm start: 运行主文件脚本。

结语

结束了。

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

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

相关文章

开源组件安全风险及应对

在软件开发的过程中,为了提升开发效率、软件质量和稳定性,并降低开发成本,使用开源组件是开发人员的不二选择(实际上,所有软件开发技术的演进都是为了能够更短时间、更低成本地构建软件)。这里的开源组件指…

Spring事件发布监听器ApplicationListener原理- 观察者模式

据说监听器模式也是mq实现的原理, 不过mq我还没来得及深入学习, 先用spring来理解一下吧 Spring事件发布监听器ApplicationListener原理- 观察者模式 什么是观察者模式一个Demo深入认识一下观察者模式Spring中的事件发布监听ps 什么是观察者模式 大家都听过一个故事叫做烽火戏…

Git学习笔记(流程图+示例)

概念 图中左侧为工作区,右侧为版本库。Git 的版本库里存了很多东西,其中最重要的就是暂存区。 • 在创建 Git 版本库时,Git 会为我们自动创建一个唯一的 master 分支,以及指向 master 的一个指 针叫 HEAD。(分支和HEAD…

设计模式-结构型模式-代理模式

代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。[DP] // 定义接口 interface Subject {void request(); }// 真实主题对象 class RealSubject implements Subject {Overridepublic void request() {System.out.println(&quo…

redis使用笔记

redis使用笔记 1、Redis简介1.1 含义1.2 功能1.3 特点 2. 常用的数据结构2.1 HASH 3 redis接口定义3.1 redisReply3.2 redisContext3.3 redisCommand 4 实践操作4.1 遇到问题4.1.1 Get哈希的时候返回error4.1.2 长度一直为0,str没法打印(未解决&#xff…

享受当下,2024,一顺百顺!

永远都不要提前焦虑, 也不要一直烦恼, 更不要被当前的情绪耗尽, 那样会对自己的身体造成严重的伤害, 自己只需要好好享受当下就行了。 车到山前必有路,关关难过关关过! 不要执着于过去,也不要过…

10-ARM gicv3/gicv4的总结-基础篇

目录 1、gic的版本2、GICv3/gicv4的模型图3、gic中断号的划分4、GIC连接方式5、gic的状态6、gic框架7、gic Configuring推荐 本文转自 周贺贺,baron,代码改变世界ctw,Arm精选, armv8/armv9,trustzone/tee,s…

LeetCode59:螺旋矩阵Ⅱ

题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 代码 class Solution { public:vector…

AWS 入门实践-远程访问AWS EC2 Linux虚拟机

远程访问AWS EC2 Linux虚拟机是AWS云计算服务中的一个基本且重要的技能。本指南旨在为初学者提供一系列步骤,以便成功地设置并远程访问他们的EC2 Linux实例。包括如何上传下载文件、如何ssh远程登录EC2虚拟机。 一、创建一个AWS EC2 Linux 虚拟机 创建一个Amazon…

GSEA -- 学习记录

文章目录 brief统计学原理部分其他注意事项转录组部分单细胞部分 brief 上一篇学习记录写了ORA,其中ORA方法只关心差异表达基因而不关心其上调、下调的方向,也许同一条通路里既有显著高表达的基因,也有显著低表达的基因,因此最后…

iMazing3 2024详细解析数据备份与恢复备份

iMazing 3的备份功能支持增量备份(类似苹果电脑里的Time Machine功能),意思是第一次把移动设备的数据全部备份下来,之后的备份就只针对数据有变化的那部分,这样可以节省大量的时间和存储空间,不会让使用者为…

LeetCode刷题日志-17.电话号码的字母组合

纯暴力解法&#xff0c;digits有多长&#xff0c;就循环多少次进行字母组合 class Solution {public List<String> letterCombinations(String digits) {List<String> reslut new ArrayList<>();if(digits.equals(""))return reslut;Map<Inte…

ubuntu 23.04 安装 中文输入法

1、安装 fcitx sudo apt install fcitxfcitx 安装好后&#xff0c;可以使用 fcitx-configtool 命令进行配置&#xff0c;其界面如下所示。在这里可以配置不同输入法的切换快捷键&#xff0c;默认输入法等。刚安装系统后&#xff0c;这里只有一个输入法&#xff0c;所以接下来要…

Mysql深入学习 基础篇 Ss.02 详解四类SQL语句

我亲爱的对手&#xff0c;亦敌亦友&#xff0c;但我同样希望你能成功&#xff0c;与我一起&#xff0c;站在人生的山顶上 ——24.3.1 一、DDL 数据定义语言 1.DDL —— 数据库操作 查询 查询所有数据库 show databases; 查询当前数据库 select database(); 创建 create databa…

力扣难题:重排链表

首先通过快慢指针找到中间节点&#xff0c;然后将中间节点之后和之前的部分分为两个链表&#xff0c;然后翻转后面的链表&#xff0c;注意方法&#xff0c;然后将两个链表交替链接。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode…

Unity 使用HyBirdCLR调用Newtonsoft.json报错问题

查了老半天&#xff0c;原来是这里的问题 官方解释 解释&#xff1a; 在Unity的IL2CPP Code Generation中&#xff0c;"Faster runtime"和"Faster (smaller) builds"是两种不同的优化设置选项&#xff0c;它们分别影响着运行时性能和构建大小。下面是它们…

一元函数积分学——刷题(16

目录 1.题目&#xff1a;2.解题思路和步骤&#xff1a;3.总结&#xff1a;小结&#xff1a; 1.题目&#xff1a; 比较这两种题的求解方法 2.解题思路和步骤&#xff1a; 3.13&#xff1a; 这个题就很适合用万能公式&#xff0c;因为可以把1t2消掉&#xff1a; 也可以用三角…

多模太与交叉注意力应用

要解决的问题 对同一特征点1从不同角度去拍&#xff0c;在我们拿到这些不同视觉的特征后&#xff0c;就可以知道如何从第一个位置到第二个位置&#xff0c;再到第三个位置 对于传统算法 下面很多点检测都是错 loftr当今解决办法 整体流程 具体步骤 卷积提取特征&#xff0c;…

unity学习(53)——选择角色界面--分配服务器返回的信息

好久没写客户端了&#xff0c;一上手还不太适应 1.经过测试&#xff0c;成功登陆后&#xff0c;客户端请求list_request&#xff0c;成功返回&#xff0c;如下图&#xff1a; 可见此时model第三个位置的参数是1.也成功返回了所有已注册角色的信息。 2.之前已知创建的角色信息…

少儿编程机器人技术开发公司的创新之路

行业背景&#xff0c;国家政策利好 随着科技的不断发展&#xff0c;少儿编程机器人技术作为一种新兴的教育方式逐渐受到人们的关注。这项技术将编程与机器人技术相结合&#xff0c;通过互动性强、趣味性高的方式&#xff0c;帮助儿童学习编程知识&#xff0c;培养逻辑思维和创…