NPM 包管理器简介

news2024/11/17 21:33:28

目录

npm 简介

包(Packages)

更新包

版本控制

运行任务


npm 简介

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

npm 的快速指南,强大的包管理器是 Node.js 成功的关键。2017 年 1 月,超过 350000 个软件包被报告在 npm 注册表中列出,使其成为地球上最大的单一语言代码存储库,您可以确定有一个包(几乎!)所有内容。
2022 年 9 月,npm 注册表中列出了超过 210 万个软件包,使其成为地球上最大的单一语言代码存储库
它最初是下载和管理 Node.js 包的依赖项的一种方式,但此后它已成为前端 JavaScript 中使用的工具。

Yarn(https://yarnpkg.com/en/) 和 pnpm (https://pnpm.io/)是 npm cli 的替代品。您也可以它们官网查看它们。

npmyarn 和 pnpm 之间命令的区别

-

npm

yarn

pnpm

install all

npm install

yarn

pnpm install

install

npm install [package]

yarn add [package]

pnpm add [package]

-D

npm install [package] -D

yarn add [package] -D

pnpm add -D [package]

-g

npm install [package] -g

yarn global add [paackage]

pnpm add -g [package]

uninstall

npm uninstall [package]

yarn remove [package]

pnpm remove [package]

update

npm update [package]

yarn upgrade [package]

pnpm update [package]

包(Packages)

npm 管理项目依赖项的下载。
1、安装所有依赖项
如果项目具有 package.json 文件,则通过运行

npm install

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

2、安装单个依赖

您还可以通过运行

npm install <package-name>

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

您通常会看到更多标志添加到此命令中:

  • --save-dev 安装包并将其添加到package. json文件devDependents中
  • --no-save 安装但不将包添加到package. json文件依赖项
  • --save-optional 安装包并将其添加到package. json文件optionalDependents
  • --save-exact 表示安装的包的版本是精确指定的。
  • --save-bundle 表示将安装的包将写入packege.json里面的bundleDependencies。
  • --no-optional 可选将阻止安装可选依赖项,npm在找不到它或安装失败的情况下会继续进行

也可以使用标志的缩写:

  • -S: --save
  • -D: --save-dev
  • -O: --save-optional
  • -E: --save-exact
  • -B: --save-bundle

devDependencies和dependencies之间的区别在于,前者在开发中的依赖,如测试包之类,而后者与生产中的构建的时候,会和程序打包在一起。

至于optionalDependencies,不同之处在于依赖项的构建失败不会导致安装失败。但您的程序有责任处理缺少依赖性的问题。

更新包

通过运行

npm update

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

您也可以指定要更新的单个程序包:

npm update <package-name>

版本控制

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

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

您可以通过运行

npm install <package-name>@<version>

运行任务

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

npm run <task-name>

例如:

"scripts": {
      "analyze": "source-map-explorer dist/static/js/main.*",
      "clean": "rm -rf dist",
      "start": "node scripts/start.js",
      "build:js": "node scripts/babel-js.js",
      "build": "node scripts/build.js",
      "zip": "node scripts/zip.js",
      "lint:fix": "eslint --fix --ext .js src",
      "precommit": "lint-staged",
      "test": "node scripts/test.js",
      "coverage": "npm run test --coverage"
 },

所以,你可以运行对应的命令,执行对应的任务。

npm run start 
npm run clean
npm run build
......

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

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

相关文章

java中的Servlet对象生命周期以及过滤器监听器

review: Servlet生命周期中的初始化方法&#xff1a; init() &#xff0c; init(config) public void init(ServletConfig config) throws ServletException { this.config config ; init(); } 因此&#xff0c;如果我们需要在初始化时执行一些自定义的操作&#xff0c;那么我…

简单易用又功能强大,来看看Postman接口测试工具怎么用?

一、Postman介绍 Postman官网上这样介绍它:"Manage all of your organizations APIs in Postman, with the industrys most complete API development environment."看的出来Postman是功能强大的API测试的工具 Postman 提供功能强大的 Web API 和 HTTP 请求的调试&a…

【C++】 类练习---封装链表、人物移动

目录 前言 正文 结构体和类的区别 练习1&#xff1a;封装链表 用类封装链表的注意事项 定义一个链表的节点结构 链表类代码 主函数 运行结果 练习2&#xff1a;人物移动 说明 头文件以及宏 人物类 主函数 运行结果 结语 前言 在学完了【C】 类基础汇总&#x…

Java多线程---线程的创建(Thread类的基本使用)

本文主要介绍Java多线程的相关知识, Thread的创建, 常用方法的介绍和使用, 线程状态等. 文章目录 前言 一. 线程和Thread类 1. 线程和Thread类 1.1 Thread类的构造方法 1.2 启用线程的相关方法 2. 创建第一个Java多线程程序 3. 使用Runnable对象创建线程 4. 使用内部类…

【Java笔试强训 31】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;美国节日…

数组传参不理解?(数组传参的本质)

在我们编写程序时&#xff0c;经常需要传递参数给函数&#xff0c;其中一种常见的参数类型就是数组。数组作为一种数据结构&#xff0c;可以存储多个相同类型的数据元素&#xff0c;并按照一定的顺序排列。在函数中传递数组参数&#xff0c;可以方便地对数组进行操作处理。但是…

StarCoder - 源代码大模型

StarCoder 是一种在源代码和自然语言文本上训练的语言模型 (LM)。 它的训练数据包含 80 多种不同的编程语言以及从 github 问题和提交以及笔记本中提取的文本。 StarCoder 是在 github 代码上训练的&#xff0c;因此它可以用来执行代码生成。 更准确地说&#xff0c;模型可以完…

手术麻醉系统源码——业务流程介绍

采用计算机和通信技术&#xff0c;实现监护仪、麻醉机、呼吸机、输液泵等设备输出数据的自动采集&#xff0c;采集的数据能够如实准确地反映患者生命体征参数的变化&#xff0c;并实现信息高度共享&#xff0c;根据采集结果&#xff0c;综合其他患者数据&#xff0c;自动生成手…

在springboot项目中配置数据库下划线命名映射为java的驼峰命名时出错

问题 在使用spirngboot集成mybaits的时候&#xff0c;想要开启命名映射&#xff0c;如图配置 # mybatis配置 mybatis:type-aliases-package: com.zhong.springcloud.pojoconfig-location: classpath:mybatis/mybatis-config.xmlmapper-locations: classpath:mybatis/mapper/*…

4年外包出来,5次面试全挂....

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;毕业于普通二本院校非计算机专业&#xff0c;18年跨专业入行测试&#xff0c;第一份工作在湖南某软件公司&#xff0c;做了接近4年的外包测试工程师&#xff0c;今年年初&#xff0c;感觉自己不能够再这样下去了&…

深入理解二分类和多分类CrossEntropy Loss和Focal Loss

深入理解二分类和多分类CrossEntropy Loss和Focal Loss 二分类交叉熵 在二分的情况下&#xff0c;模型最后需要预测的结果只有两种情况&#xff0c;对于每个类别我们的预测得到的概率为 p p p和 1 − p 1-p 1−p&#xff0c;此时表达式为&#xff08; 的 log ⁡ \log log底数…

如何用ChatGP协助你,从品牌角度对产品提出升级建议?

该场景对应的关键词库&#xff08;19个&#xff09;&#xff1a; 品牌洋葱图思维模型、产品信息、人群、品类、属性、体验、差异化特征、功效、品牌价值主张、目标用户、需求、痛点、爽点、消费者、外观、功能、结构、产品优化建议、产品开发可行性。 提问模板(3个&#xff09…

《Vue.js 设计与实现》—— 01 权衡的艺术

书籍链接&#xff1a;https://weread.qq.com/web/bookDetail/c5c32170813ab7177g0181ae 框架设计里到处都体现了权衡的艺术。 当我们设计一个框架时&#xff0c;框架本身的各个模块之间并不是相互独立的&#xff0c;而是相互关联、相互制约的。 作为框架设计者&#xff0c;一…

Windows10安装免安装版redis

下载 官方下载地址&#xff1a;github.com/MicrosoftAr…选择版本 解压安装 配置环境变量&注册成服务 配置环境变量 以管理员启动命令行&#xff0c;在redis安装根目录&#xff0c;把redis注册服务 redis-server --service-install redis.windows-service.conf --lo…

Communications chemisty|德睿智药工作-用于分子性质预测的药物约束异构图Transformer模型

德睿智药的分子性质预测任务 题目&#xff1a; Pharmacophoric-constrained heterogeneous graph transformer model for molecular property prediction 文献来源&#xff1a;COMMUNICATIONS CHEMISTRY | (2023) 6:60 | 代码&#xff1a;https://github.com/stardj/PharmHG…

springboot+dubbo+zookeeper 项目实战

现在有一段代码再前台&#xff0c;后台系统中都存在&#xff0c;都需要这段代码&#xff0c;存在这种情况&#xff0c;我们可以选择将这段代码提取出来作为一个服务&#xff0c;让前台和后台系统作为消费者远程调用这段代码&#xff0c;提高了代码的复用性。 springboot集成dub…

Unity Audio -- (2)创建动态音效

评估场景需求 本节的目标是添加脚步声到角色身上&#xff0c;当角色走路时&#xff0c;触发动画事件并播放声音。 脚步声是我们在真实世界中常常被我们所忽视的声音&#xff0c;但脚步声能够传达出许多环境信息。你现在可以花一小段时间绕着你周围的环境走一走并仔细听听脚步声…

CLIP : Learning Transferable Visual Models From Natural Language Supervision

CLIP : Learning Transferable Visual Models From Natural Language Supervision IntroductionApproach Introduction 在raw的数据上自监督的训练模型&#xff0c;已经在NLP领域取得了革命性进展&#xff0c;这种模型需要收到硬件、数据的限制&#xff0c;但是能得到很好的迁…

算法 DAY55 动态规划11 392.判断子序列 115.不同的子序列

392.判断子序列 本题可以直接用双指针解法。但是本题是编辑距离的入门题目&#xff0c;故采用动态规划解法为后序“编辑距离”类题目打基础。 本题与最大子序列非常相似&#xff0c;但不同的是s必须连续&#xff0c;t可以不连续。 五部曲 1、dp[i][j] 表示以下标i-1为结尾的字…

Seata介绍

介绍&#xff1a; Seata的设计目标是对这个业务无侵入&#xff0c;因此从业务无侵入的2PC方案开始的&#xff0c;在传统的2PC的基础上演进的。它把一个分布式事务拆分理解成一个包含了若干分支事务的全局事务。全局事务的职责是协调其下管辖的分支事务达成一致性&#xff0c;要…