【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: 运行主文件脚本。

结语

结束了。

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

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

相关文章

Pytest总结

Pytest作为Python的一个单元测试框架,主要用来针对软件最小单位(函数、方法)进行正确性的检查,经过封装可以用于我们自动化测试。 一、Pytest可以做什么 单元测试框架主要用于编写、组织和执行测试用例。具体概述如下&#xff1…

23 经典卷积神经网络 LeNet【李沐动手学深度学习v2课程笔记】 (备注:提到如何把代码从CPU改到在GPU上使用)

目录 1. LeNet 2. 实现代码 3. 模型训练 4. 小结 本节将介绍LeNet,它是最早发布的卷积神经网络之一,因其在计算机视觉任务中的高效性能而受到广泛关注。 这个模型是由AT&T贝尔实验室的研究员Yann LeCun在1989年提出的(并以其命名&…

WIN32部分知识介绍

🌈前言:此篇博客是为下一篇的《贪吃蛇》的做的前戏工作,这篇会讲到贪吃蛇所用到的一些工具以及函数。 首先在讲WIN32的内容时我们想了解一下他的基本概念: Windows 这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外…

解决QT cc1plus.exe: error: out of memory allocating

QT中增加资源文件过大时,会编译不过,报错: cc1plus.exe: out of memory allocating 1073745919 bytes 使用qrc资源文件,也就是在QT的工程中添加资源文件,就是添加的资源文件(如qrc.cpp)会直接被…

前端文件上传

文件上传方式 前端文件上传有两种方式,第一种通过二进制blob传输(formData传输),第二种是通过base64传输 文件相关的对象 file对象其实是blob的子类 blob对象的第一个参数必须是一个数组,你可以把一个file对象放进去…

开源的python 游戏开发库介绍

本文将为您详细讲解开源的 Python 游戏开发库,以及它们的特点、区别和应用场景。Python 社区提供了多种游戏开发库,这些库可以帮助您在 Python 应用程序中实现游戏逻辑、图形渲染、声音处理等功能。 1. Pygame 特点 - 基于 Python 的游戏开发库。…

Git 进阶 高级用法,重要命令记录

本篇文章用于记录Git高级用法,新手可以看我的另一篇文章:Git基础教学。 Git git fetch 是git pull 的细分步骤,git pull 包含了git fetch git pull origin master 上述命令其实相当于git fetch git merge 在实际使用中,git fetc…

C#,排列组合的堆生成法(Heap’s Algorithm for generating permutations)算法与源代码

1 排列组合的堆生成法 堆生成算法用于生成n个对象的所有组合。其思想是通过选择一对要交换的元素,在不干扰其他n-2元素的情况下,从先前的组合生成每个组合。 下面是生成n个给定数的所有组合的示例。 示例: 输入:1 2 3 输出&a…

解决Gradle下载过慢问题的有效方式:使用国内镜像站点

前言 在开发过程中,我们经常会遇到Gradle下载速度缓慢或超时的问题。作为一个强大而流行的构建工具,Gradle是许多项目中必不可少的一部分。然而,由于官方下载地址可能受网络限制影响,导致下载速度较慢。针对这个问题,…

数字化转型导师坚鹏:科技创新产业发展研究及科技金融营销创新

科技创新产业发展研究及科技金融营销创新 课程背景: 很多银行存在以下问题: 不清楚科技创新产业的发展现状? 不知道科技金融有哪些成功的案例? 不知道科技金融如何进行营销创新? 课程特色: 以案例…

如何在Mapbox GL中处理大的GEOJSON文件

Mapbox GL可以将 GeoJSON 数据由客户端(Web 浏览器或移动设备)即时转换为 Mapbox 矢量切片进行显示和处理。本文的目的是教大家如何有效加载和渲染大型 GeoJSON 源,并优化渲染显示速度,增强用户体验,减少客户端卡顿问题。本文以Mapbox 为例,至于其它框架原理大致相同,可…

【神经网络与深度学习】LSTM(Long Short-Term Memory)神经网络模型

概述 LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN)结构,通常被用于处理和学习时间序列数据。因此,LSTM属于深度学习领域中的一种神经网络模型。 在深度学习中,LSTM被广泛应用于…