NPM 包管理器简介

 

目录

官方数据

npm 简介

安装所有依赖

安装单个包

更新包

版本控制

运行任务


官方数据

 

包量高达310w, 6月份的第三周下载量高达600亿,5月份下载量更是高达2473亿,这惊人的数字无外乎体现当今互联网的活跃程度和仍旧处于高速发展阶段。

# 2024 年 6 月 npm 数据统计
Packages
3,112,780Downloads · Last Week
60,215,452,954Downloads · Last Month
247,301,258,246

npm 简介

npm 是 Node.js 的标准包管理器。

据官方数据,在 2024 年 6 月,npm 注册表中列出了超过 310 万个软件包,使其成为地球上最大的单一语言代码存储库,而且你可以阅读或使用几乎一切软件包。

它最初是作为一种下载和管理 Node.js 包依赖的方式,但后来成为前端 JavaScript 中也使用的工具。

yarn pnpm 是 npm cli 的替代品。 你也可以查看它们。

yarn官网:Home page | Yarn (yarnpkg.com)

pnpm官网:Fast, disk space efficient package manager | pnpm

npm 管理项目依赖的下载。

安装所有依赖

如果一个项目有一个 package.json 文件,通过运行

npm install

它将在 node_modules 文件夹中安装项目所需的所有内容,如果它不存在则创建它:

npm init

安装单个包

安装单个包

npm install <package-name>

此外,从 npm 5 开始,此命令将 <package-name> 添加到 package.json 文件依赖。 在版本 5 之前,你需要添加标志 --save

通常你会看到更多的标志被添加到这个命令中:

  • --save-dev 安装并添加条目到 package.json 文件开发依赖
  • --no-save 安装但不添加条目到 package.json 文件依赖
  • --save-optional 安装并添加条目到 package.json 文件可选依赖
  • --no-optional 将阻止安装可选依赖

也可以使用标志的简写形式:

  • -S:--save
  • -D:--save-dev
  • -O:--save-optional

devDependencies 和 dependencies 之间的区别在于前者包含开发工具,如测试库,而后者与生产中的应用打包在一起。

至于 optionalDependencies 的不同之处在于,依赖的构建失败不会导致安装失败。 但是你的程序有责任处理依赖的缺失。 

更新包

更新也很容易,通过运行

npm update

  

 npm 将检查所有包是否有满足你的版本控制约束的更新版本。

你也可以指定要更新的单个包:

npm update <package-name>

注意:更新包并不是版本更新,而是仅对当前版本约束下指定包进行文件更新。

 

 

版本控制

除了普通下载,npm 还管理 版本控制,因此你可以指定任何特定版本的软件包,或者要求比你需要的版本更高或更低的版本。

很多时候你会发现一个库只与另一个库的主要版本兼容。

或者最新版本的库中的一个错误,仍然没有修复,导致了一个问题。

指定一个库的明确版本也有助于让每个人都使用相同的包版本,这样整个团队就可以运行相同的版本,直到 package.json 文件被更新。

在所有这些情况下,版本控制都有很大帮助,npm 遵循语义版本控制 (semver) (文章有提到过)标准。

你可以安装特定版本的软件包,通过运行

npm install <package-name>@<version>

示例:

运行任务

package.json 文件支持指定命令行任务的格式,可以使用

npm run <task-name>

例如:

{"scripts": {"start-dev": "node lib/server-development","start": "node lib/server-production"}
}

使用这个特性来运行 Webpack 是很常见的:

{"scripts": {"watch": "webpack --watch --progress --colors --config webpack.conf.js","dev": "webpack --progress --colors --config webpack.conf.js","prod": "NODE_ENV=production webpack -p --config webpack.conf.js"}
}

因此,不用输入那些很容易忘记或输入错误的长命令,你可以运行

npm run watch
npm run dev
npm run prod

 

规范与习惯

可能有细心的网友会发现我的写法是 npm install --save-dev <package-name> 

这两种写法都是可执行的,仅仅是个人的习惯。但是从官方示例来讲 npm install <package-name> --save-dev 更是推荐的写法 。

示例:

npm install sax
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save-exact
npm install ansi-regex --save-bundle

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

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

相关文章

Web前端开发实战:HTML5+CSS3+JavaScript+Vue+Bootstrap

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

IT入门知识第四部分《数据库》(4/10)

目录 1. 数据库基础 1.1 数据库的定义 1.2 数据库的关键概念 数据模型 数据库架构 数据库操作语言&#xff08;DML 和 DDL&#xff09; 总结 2. 关系型数据库 2.1 MySQL MySQL 的历史和特点 MySQL 的安装和配置 MySQL 的基本操作 2.2 PostgreSQL PostgreSQL 的特…

相似性搜索揭秘:向量嵌入与机器学习应用

引言 在当今数据驱动的世界中&#xff0c;有效地检索和利用信息是一项关键挑战。在数据库、搜索引擎和众多应用程序中&#xff0c;寻找相似数据是一项基本操作。传统数据库中&#xff0c;基于固定数值标准的相似项搜索相对直接&#xff0c;通过查询语言即可实现&#xff0c;如…

聚四氟乙烯离心管 四氟反应管 消解管 PTFE螺口带盖管 特氟龙试管

一、产品介绍 样品悬浮液盛放在管状试样容器中&#xff0c;在离心机的高速旋转下&#xff0c;由于巨大的离心力作用&#xff0c;使悬浮的微小颗粒 以一定的速度沉降&#xff0c;从而与溶液得以分离。这种带密封盖或压盖的管状试样容器&#xff0c;就是离心管。 PTFE离心管&…

【机器学习】第9章 降维算法——PCA降维

一、概念 1.PCA &#xff08;1&#xff09;主成分分析&#xff08;Principal ComponentAnalysis&#xff0c;PCA&#xff09;一种经典的线性降维分析算法。 &#xff08;2&#xff09;原理&#xff0c;这里以二维转一维为例&#xff0c;原来的平面变成了一条直线 这是三维变二…

车载学习:UDS诊断、ECU刷写、OTA升级、Tbox测试、CANoe实操

每天的直播时间&#xff1a; 周一至周五&#xff1a;20&#xff1a;00-23&#xff1a;00 周六与周日&#xff1a;9&#xff1a;00-12&#xff1a;00&#xff0c;14&#xff1a;00-17&#xff1a;00 TBOX 深圳 涉及过T-BOX测试吗Ota升级涉及的台架环境是什么样的&#xff1f;上…

oracle的堆栈的实现方式

在Oracle的堆栈实现上&#xff0c;我们首先需要明确&#xff0c;Oracle Stack并不是直接指代某种特定的堆栈数据结构实现&#xff0c;而是指以Oracle公司的产品为基础构建的完整技术堆栈。但如果你是在询问Oracle环境中如何实现类似堆栈的数据结构&#xff0c;或者如何在Oracle…

PHP蜜语翻译器在线文字转码解码源码

源码介绍 PHP蜜语翻译器在线文字转码解码源码 文字加密通话、一键转换、蜜语密码 无需数据库,可以将文字、字母、数字、代码、表情、标点符号等内容转换成新的文字形式&#xff0c;通过简单的文字以不同的排列顺序来表达不同的内容&#xff01;支持在线加密解密 有多种加密展示…

如何在windows中创建linux的sh文件

对于非linux的使用者&#xff0c;我们可能希望把sh文件在windows中创建好&#xff0c;然后再复制到linux中使用。因为我们更喜欢windows的风格。 我们在win中创建了一个叫test.txt的文本文件&#xff0c;把linux脚本内容写好&#xff0c;保存。然后把.txt改成.sh。为什么要这么…

数学_笔记

一、数学的主要分支 1. 纯数学&#xff08;Pure Mathematics&#xff09;&#xff1a; 研究数学本身的理论和结构&#xff0c;不考虑其实际应用。 - **代数学&#xff08;Algebra&#xff09;**&#xff1a;- **线性代数&#xff08;Linear Algebra&#xff09;**&#xff1…

SpringCloud之Nacos

SpringCloud之Nacos 一、微服务介绍 1. 什么是微服务 2014年&#xff0c;Martin Fowler&#xff08;马丁福勒 &#xff09; 提出了微服务的概念&#xff0c;定义了微服务是由以单一应用程序构成的小服务&#xff0c;自己拥有自己的进程与轻量化处理&#xff0c;服务依业务功能…

测试用例设计:提升测试覆盖率的策略与方法

测试用例设计&#xff1a;提升测试覆盖率的策略与方法 前言测试用例设计的原则提高测试覆盖率的方法测试类型的分析 测试用例设计的基本方法等价类划分边界值分析正交法判定表法因果图法 方法与策略方法策略 如何评价测试用例结论 前言 在软件开发过程中&#xff0c;测试用例设…

Spring Boot集成websocket实现webrtc功能

1.什么是webrtc&#xff1f; WebRTC 是 Web 实时通信&#xff08;Real-Time Communication&#xff09;的缩写&#xff0c;它既是 API 也是协议。WebRTC 协议是两个 WebRTC Agent 协商双向安全实时通信的一组规则。开发人员可以通过 WebRTC API 使用 WebRTC 协议。目前 WebRTC…

WPF学习(4)--SCICHART学习

一、项目创建过程 1.下载SCICHART插件 2.选中第一个&#xff0c;确保引用中有我们要用的 二、示例代码 1.前端代码 <Window x:Class"SciChart.Examples.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"h…

centos 7无需token编译安装freeswitch 1.10.11 ——筑梦之路

准备工作 安装编译工具和依赖包 yum update -y sudo yum install epel-release vim tcpdump net-tools.x86_64 -y sudo yum install gcc-c sqlite-devel zlib-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel openssl-devel git -y yum install yasm n…

DFS 迷宫

个人感觉DFS没有递归那么烧脑 简单迷宫 如何接受二维数组 先构建A[MAXN][MAXN]&#xff0c;人后二重循环 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> using namespace std; const int N…

微型操作系统内核源码详解系列五(2):cm3下栈的初始化

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…

【创造】文心智能体

了解什么是 AI Agent&#xff08;智能体&#xff09;&#xff1a;一文读懂Agent ——根本没读懂。。。 智能体开发入门&#xff1a;快速上手零代码智能体开发

Mac电脑安装配置NVM

NVM NVM&#xff08;Node Version Managernvm&#xff09; 是一个 node 版本控制工具&#xff0c;可用来灵活切换 node 版本&#xff0c;以解决维护不同项目需要使用不同 node 版本的问题。 前置条件 在安装NVM之前要先安装Homebrew&#xff0c;可以参考这篇文章 开始安装N…

windows反弹shell的方法

什么是正向shell和反向shell 首先说&#xff0c;正向shell是控制端主动连接被控制端&#xff0c;通过目标主机开放一个监听端口等待其他主机访问&#xff0c;从而获得对目标主机的shell访问&#xff0c;优点是控制端可以整个控制目标主机&#xff0c;但缺点会受到防火墙的连&a…