包管理工具--》npm的配置及使用(二)

包管理工具npm cnpm yarn的使用 本文介绍了四种常见的Node.js包管理工具:npm、cnpm、yarn和pnpm。npm是Node.js默认的包管理器,支持安装、更新、卸载依赖等操作,可通过命令配置淘宝镜像提升下载速度。cnpm是淘宝开发的npm镜像,专为国内用户优化下载速度。yarn由Facebook开发,强调安装速度和稳定性,使用符号链接管理依赖。文章详细说明了各工具的安装方法、基本使用命令、环境区分配置等核心功能,并提供了npm切换镜像源、yarn常用命令等实用技巧,帮助开发者高效管理项目依赖。 阅读详情

 在阅读本篇文章前请先阅读包管理工具--》npm的配置及使用(一)

包管理工具系列文章目录

一、包管理工具--》npm的配置及使用(一)

二、包管理工具--》npm的配置及使用(二)

 三、包管理工具--》发布一个自己的npm包

四、包管理工具--》yarn的配置及使用

五、包管理工具--》其他包管理器之cnpm、pnpm、nvm

目录

🌟语义版本

避免还原的差异

npm的差异版本处理

🌟npm 脚本 (npm scripts)

🌟运行环境配置

在node中读取package.json

🌟其他npm命令 {ignore}

安装

查询

更新

卸载包

npm 配置

 🌟写在最后 


🌟语义版本

语义版本是什么呢,听起来感觉很陌生,但看到下面代码肯定就会感觉熟悉,每个项目中都能看到的:

  "dependencies": {
    "big.js": "^6.2.1",
    "clipboard": "^2.0.11",
    "dayjs": "^1.11.7",
    "moment": "^2.29.4",
    "pinia": "2.0.34",
    "pinyin-pro": "^3.14.0",
    "uview-max": "^1.1.6",
    "vue": "^3.2.45",
    "vue-i18n": "^9.1.9"
  },

版本规范:主版本号.次版本号.补丁版本号

  • 主版本号:仅当程序发生了重大变化时才会增长,如新增了重要功能、新增了大量的API、技术架构发生了重大变化
  • 次版本号:仅当程序发生了一些小变化时才会增长,如新增了一些小功能、新增了一些辅助型的API
  • 补丁版本号:仅当解决了一些 bug 或 进行了一些局部优化时更新,如修复了某个函数的 bug、提升了某个函数的运行效率

有的时候,我们希望:安装我的依赖包的时候,次版本号和补丁版本号是可以有提升的,但是主版本号不能变化

有的时候,我们又希望:安装我的依赖包的时候,只有补丁版本号可以提升,其他都不能提升

甚至我们希望依赖包保持固定的版本,尽管这比较少见

这样一来,就需要在配置文件中描述清楚具体的依赖规则,而不是直接写上版本号那么简单。

这种规则的描述,即语义版本

语义版本的书写规则非常丰富,下面列出了一些常见的书写方式

符号描述示例示例描述
>大于某个版本>1.2.1大于1.2.1版本
>=大于等于某个版本>=1.2.1大于等于1.2.1版本
<小于某个版本<1.2.1小于1.2.1版本
<=小于等于某个版本<=1.2.1小于等于1.2.1版本
-介于两个版本之间1.2.1 - 1.4.5介于1.2.1和1.4.5之间
x不固定的版本号1.3.x只要保证主版本号是1,次版本号是3即可
~补丁版本号可增~1.3.4保证主版本号是1,次版本号是3,补丁版本号大于等于4
^此版本和补丁版本可增^1.3.4保证主版本号是1,次版本号可以大于等于3,补丁版本号可以大于等于4
*最新版本*始终安装最新版本

避免还原的差异

版本依赖控制始终是一个两难的问题

如果允许版本增加,可以让依赖包的bug得以修复(补丁版本号),可以带来一些意外的惊喜(次版本号),但同样可能带来不确定的风险(新的bug)

如果不允许版本增加,可以获得最好的稳定性,但失去了依赖包自我优化的能力

而有的时候情况更加复杂,如果依赖包升级后,依赖也发生了变化,会有更多不确定的情况出现

基于此,npm 在安装包的时候,会自动生成一个 package-lock.json 文件,该文件记录了安装包时的确切依赖关系

当移植工程时,如果移植了 package-lock.json 文件,恢复安装时,会按照 package-lock.json 文件中的确切依赖进行安装,最大限度的避免了差异

npm的差异版本处理

如果两个包依赖同一个包的不同版本,如下图

面对这种情况,在 node_modules 目录中,不会使用扁平的目录结构,而会形成嵌套的目录,如下:

├── node_modules
│   ├── a 
│   │   ├── node_modules
│   │   │   ├── c
│   │   │   |   |—— c包的文件
│   │   │── a包的文件     
│   ├── b 
│   │   ├── node_modules
│   │   │   ├── c
│   │   │   |   |—— c包的文件
│   │   │── b包的文件       

🌟npm 脚本 (npm scripts)

在开发的过程中,我们可能会反复使用很多的 CLI 命令,例如:

  • 启动工程命令(node 或 一些第三方包提供的CLI命令)
  • 部署工程命令(一些第三方包提供的CLI命令)
  • 测试工程命令(一些第三方包提供的CLI命令)

这些命令纷繁复杂,根据第三方包的不同命令也会不一样,非常难以记忆

于是,npm 非常贴心的支持了脚本,只需要在 package.json 中配置 scripts 字段,即可配置各种脚本名称

之后,我们就可以运行简单的指令来完成各种操作了

运行方式是 npm run 脚本名称

不仅如此,npm 还对某些常用的脚本名称进行了简化,下面的脚本名称是不需要使用run的:

  • start
  • stop
  • test

一些细节:

  • 脚本中可以省略npx
  • start脚本有默认值:node server.js

🌟运行环境配置

我们书写的代码一般有三种运行环境:

  1. 开发环境
  2. 生产环境
  3. 测试环境

有的时候,我们可能需要在 node 代码中根据不同的环境做出不同的处理

如何优雅的让 node 知道处于什么环境,是极其重要的

通常我们使用如下的处理方式:

node中有一个全局变量 global (可以类比浏览器环境的window),该变量是一个对象,对象中的所有属性均可以直接使用

global有一个属性是process,该属性是一个对象,包含了当前运行node程序的计算机的很多信息,其中有一个信息是env,是一个对象,包含了计算机中所有的系统变量

通常,我们通过系统变量 NODE_ENV 的值,来判定node程序处于何种环境

有两种方式设置 NODE_ENV 的值

  1. 永久设置
  2. 临时设置

我们一般使用临时设置

因此,我们可以配置 scripts 脚本,在设置好了 NODE_ENV 后启动程序

为了避免不同系统的设置方式的差异,可以使用第三方库 cross-env 对环境变量进行设置

在node中读取package.json

有的时候,我们可能在 package.json 中配置一些自定义的字段,这些字段需要在node中读取

在node 中,可以直接导入一个json格式的文件,它会自动将其转换为js对象

🌟其他npm命令 {ignore}

安装

  1. 精确安装最新版本
npm install --save-exact 包名 
npm install -E 包名
  1. 安装指定版本
npm install 包名@版本号

查询

  1. 查询包安装路径
npm root [-g]
  1. 查看包信息
npm view 包名 [子信息]
## view aliases:v info show
  1. 查询安装包
npm list [-g] [--depth=依赖深度]
## list aliases: ls  la  ll

更新

  1. 检查有哪些包需要更新
npm outdated
  1. 更新包
npm update [-g] [包名]
## update 别名(aliases):up、upgrade

卸载包

npm uninstall [-g] 包名
## uninstall aliases: remove, rm, r, un, unlink

npm 配置

npm的配置会对其他命令产生或多或少的影响

安装好npm之后,最终会产生两个配置文件,一个是用户配置,一个是系统配置,当两个文件的配置项有冲突的时候,用户配置会覆盖系统配置

通常,我们不关心具体的配置文件,而只关心最终生效的配置

通过下面的命令可以查询目前生效的各种配置

npm config ls [-l] [--json]

另外,可以通过下面的命令操作配置

  1. 获取某个配置项
npm config get 配置项
  1. 设置某个配置项
npm config set 配置项=值
  1. 移除某个配置项
npm config delete 配置项

 🌟写在最后 

包管理工具--》栏目将详细讲解前端包管理器,包括npm,yarn,及其他包管理器,如果文中出现有瑕疵的地方各位通过评论或者私信联系我,我们一起进步,有兴趣的伙伴可以关注订阅一下:点击查看更多实用技巧与知识

`npm-config` 是 Node Package Manager (npm) 的一个重要工具,用于管理npm的配置项 npm-config是 Node Package Manager (npm) 的一个重要工具,用于管理npm的配置项。示例:将默认注册镜像设为中国淘宝镜像源如果要以JSON格式输出,可以添加--json参数。通过这些命令,你可以管理和调整npm的行为,比如更改默认的包存储位置或下载速度优化。npm-config是Node Package Manager(npm)中的一个重要实用程序,它允许用户管理和查看npm的配置选项。这些配置项定义了npm的行为,如缓存路径、默认注册服务器地址、全局模块安装位置等。 阅读详情

相关推荐

npm基本操作及命令讲解

在运行npm run build命令时,npm会自动执行定义的build脚本,即执行webpack打包应用程序。npm是Node.js自带的包管理器,使用方便,可以很方便地在项目中使用第三方模块,也可以发布自己的模块供其他人使用。代码中,定义了一个名为start的脚本,它会执行node命令,并启动app.js文件。在使用npm时,可以通过在package.json文件中定义自定义脚本来运行一些自定义的构建和启动命令。除了test脚本外,还可以定义其他自定义脚本,例如:build脚本、start脚本等。

weixin_43749805的博客 3940

配置npm

(1)在NodeJs下建立"node_global"及"node_cache"两个文件夹 (2)输入以下命令配置npm的全局模块的存放路径以及cache的路径 npm config set prefix + node_global的路径 npm config set cache + node_cache的路径 (3)配置系统变量,新建NODE_PATH后输入node_modules的路径 (4)在命令行输入以下命令试着安装express(注:“-g”这个参数意思是装到g..

qq_51644702的博客 7836

包管理工具详解npm 、 yarn 、 cnpm 、 npx 、 pnpm

简明扼要的概述了,包管理工具npm 、 yarn 、 cnpm 、 npx 、 pnpm

凉茶铺的博客 2699

npm详解

例如用淘宝源安装express模块:npm install express --registry=https://registry.npm.taobao.org。例如:全局安装淘宝npm镜像: npm install -g cnpm --registry=https://registry.npm.taobao.org。(4)阿里云npm源:https://registry.npm.alibaba-inc.com。(2)淘宝源:https://registry.npm.taobao.org。

cyqzy的博客 6039

全网详解 .npmrc 配置文件:比如.npmrc的优先级、命令行,如何配置.npmrc以及npm常用命令等

全网详解 .npmrc 配置文件:比如.npmrc的优先级、命令行,如何配置.npmrc以及npm常用命令等。

念兮为美 1万+

手把手教你实现阿克曼ROS小车的运动控制

本文详细介绍了如何从零开始实现阿克曼ROS小车的运动控制。内容涵盖硬件搭建、STM32底层PID速度与舵机控制、ROS层阿克曼运动学模型解析,以及上下位机通信协议设计。通过手把手的代码示例和调试步骤,帮助机器人爱好者与开发者掌握将高级速度指令转化为小车具体动作的全流程,实现流畅的阿克曼转向控制。

weixin_29193259的博客 199

npmrc切换技巧:在local-npm与官方 registry 间无缝切换

local-npm是一款本地优先的npm镜像工具,能够帮助开发者在离线环境下也能顺畅使用npm包管理功能。本文将分享3个实用的npmrc切换技巧,让你在local-npm与官方registry之间实现无缝切换,提升开发效率。 ## 为什么需要切换npm registry? 在日常开发中,我们经常会遇到这样的场景:公司内网环境下需要使用私有npm源,回家后又要切换回官方源;或者像使用local-

gitblog_01066的博客 793

Flutter UI代码生成实战:Cursor与MCP的企业级规范适配

本文探讨了在企业级Flutter项目中,如何通过配置Cursor Rules与定制Figma MCP工具,为AI代码生成设定严格的开发规范。该方法解决了AI生成代码与现有项目架构、命名约定及资源引用规范脱节的核心痛点,实现了从Figma设计稿到高质量、可维护Flutter UI代码的自动化流程,显著提升团队协作效率与代码一致性。

http9protocoller的博客 280

包管理工具npm的安装和使用

node.js在安装时会自动安装npm,所以如果你已经安装好了node.js,就可以直接使用npm,可以通过 npm -v查看版本测试号,如果显示版本号说明安装成功,反之安装失败。Path是操作系统的一个环境变量,可以设置一些文件夹的路径,在当前目录下找不到可执行文件时,就会在环境变量Path的目录中挨个的查找,如果找到则执行,如果没有找到就会报错。项目中可能会遇到版本不匹配的情况,有时就需要安装指定版本的包,可以使用下面的命令的。大米 , 油 , 葱 , 鸡蛋 , 锅 , 煤气 , 铲子。

qq_45569925的博客 1704

12V INPUT电源电路设计中的关键保护机制解析【精简】

本文深入解析了12V INPUT电源电路设计中不可或缺的关键保护机制。针对常见的电源反接、过压及浪涌等风险,文章详细拆解了PMOS防反接、TVS过压钳位、OVP芯片关断以及快速断电电路等核心防护方案的设计原理、选型要点与实战优化技巧,旨在帮助工程师构建可靠、经济的电源前端防御体系。

weixin_29158047的博客 228

Unity四部曲(核心)

需要先改成Cube复杂的展开留到unity进阶再说。

ultraman1234566的博客 2797

包管理工具--》npm的配置及使用(一)

npm 的出现,弥补了 node 没有包管理器的缺陷,于是很快,node 在安装文件中内置了 npm,当开发者安装好 node 之后,就自动安装了 npm,不仅如此,node 环境还专门为 npm 提供了良好的支持,使用 npm 下载的包更加方便了。node 和 npm 是互相成就的,node 的出现让 npm 火了,npm 的火爆带动了大量的第三方库的发展,很多优秀的第三方库打包上传到了 npm,这些第三方库又为 node 带来了大量的用户。这些库使用 CommonJS 标准书写而成,非常容易使用。

Ghmin的博客 1980

Python蓝色跳动的爱心(完整代码)

Python语言实现蓝色跳动的爱心的完整代码。 代码分析 这段代码使用了 库来创建一个动态的爱心图案,并在屏幕上显示带有动态效果的“我爱你”字样。以下是对这段代码的详细分析: 用于创建图形用户界面(GUI)。 用于生成随机数,主要用于控制爱心图案的扩散效果。 中的 , , , 用于数学计算,生成爱心形状和扩散效果。 包含了 等常量,用于控制控件的对齐方式。 2. 全局变量定义 , : 定义画布的大小。 , : 爱心的中心坐标。 : 用于定义爱心形状的缩放

AIGC 1918

npm 包管理工具

探索 npm:JavaScript 的赛博配给站...

奇遇少年 1731

Ollama DNS 重新绑定攻击 (CVE-2024-28224)

一旦 DNS 重新绑定攻击成功,攻击者就可以对这些 API 进行排序,以读取 Ollama 运行的进程可访问的任意文件数据,并将这些数据泄露到攻击者控制的系统中。完成对“创建模型” API 请求的调用后,Ollama 将收集组成新创建的用户模型的许多工件,包括大型语言模型数据、许可证数据等,以及我们要提取的文件,所有这些都可以通过其 SHA256 内容进行寻址。这是我们要窃取的文件,在我们的示例中,是可通过运行 Ollama 的主机上的路径名访问的现有文本文件。值得注意的是,该模型配置为通过参数中的。

技术超强的网络安全平台 1648

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 999

了解npm:JavaScript包管理工具

npm是Node.js的包管理器,也是前端开发不可或缺的一部分。它提供了丰富的包资源、便捷的包管理以及强大的社区支持。通过了解npm的基本概念、安装与使用、包管理、脚本执行以及常见问题及解决方案,你可以更好地利用npm来提高前端开发的效率和灵活性。无论你是初学者还是经验丰富的开发者,npm都是你不可或缺的工具之一。

huaqianzkh的专栏 1630

078、镜头阴影校正:LSC算法原理与标定优化

文章摘要 镜头阴影校正(LSC)是手机影像系统中的关键技术,用于解决镜头渐晕效应导致的画面边缘暗角问题。本文详细分析了LSC算法的核心原理,包括非均匀网格划分、双线性插值等关键技术点,并揭示了标定流程中的常见陷阱(光源均匀性、灰卡反射特性、温度漂移)。文章还深入探讨了增益计算的工程实现细节,以及实际调优中的关键考量因素(色差校正、动态场景适应等)。作者结合15年经验,给出了包括验证方法、网格参数设计、产线标定等实用性建议,强调LSC算法应与光学设计协同优化,才能达到最佳效果。

sundong_81的博客 42

包管理工具npm yarn

关于npm的一些笔记学习笔记接上篇nodejs学前笔记nvm 全称 Node Version Manager允许通过命令行快速安装和使用不同版本的 nodejs。npm 和 yarn 的命令和操作差不多 学会一个第二个也差不多就会了这只是我的一个学习笔记 如果有问题欢迎指正。

Go_going_的博客 1733

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

包管理工具那么多,怎么选?npm、yarn 和 pnpm 三者比较及使用详解!

NPM(Node Package Manager)是 Node.js 默认的包管理器,它是世界上最大的软件注册表之一,有超过 100 万个包(package)可供下载使用。NPM 可以让开发者轻松地分享、安装和管理 Node.js 中的代码包和依赖项,它是构建现代 JavaScript 应用程序的关键组件之一。除了作为 Node.js 的包管理器之外,NPM 也可以用于前端开发。在前端开发中,NPM 主要用于安装、管理和更新前端项目的各种依赖包,例如 Vue、React、Angular 等常用框架。

蜗牛的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

nodejs包管理工具对比:npm、Yarn、cnpm、npx

每种包管理工具各有侧重,npm作为Node.js的原生工具,是最基础且普遍的选择;Yarn在性能和稳定性上有所优化,特别是在大型项目中表现更佳;cnpm解决了特定地区的网络问题;npx则简化了命令行工具的使用流程。开发者可以根据自己的需求和环境选择合适的包管理工具。

大剑师兰特的GIS世界 2747

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

包管理工具,npm、yarn、pnpm

1、包管理工具概述 本门课程的前置知识:JavaScript、ES6、模块化、git 本门课程的所有代码均书写在 nodejs 环境中,不涉及浏览器环境 概念 模块(module) 通常以单个文件形式存在的功能片段,入口文件通常称之为入口模块或主模块 库(library,简称lib) 以一个或多个模块组成的完整功能块,为开发中某一方面的问题提供完整的解决方案 包(package) 包含元数据的库,这些元数据包括:名称、描述、git主页、许可证协议、作者、依赖等等 背景 CommonJS 的出现,使 n

qq_43750501的博客 4838

NodeJS(二):npm包管理工具、yarn、npx、pnpm工具等

在npm v3时期出现的包管理工具弥补了很多早期npm的缺陷,解决了npm v5才解决的问题,例如:使用 yarn.lock 等机制,锁定版本依赖;利用缓存机制,实现了离线模式等等。

DogEgg_001的博客 3218

npm和yarn的区别(包管理工具)

包管理工具npm和yarn的一些区别 1. 官网文档 [npm](https://www.npmjs.cn/) [yarn](https://yarn.bootcss.com/) 2. npm存在的一些不足 npm install的时候巨慢。特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。 同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。 "5.0.3", "~5.0.

m0_49159526的博客 3620

包管理工具npm

包的英文单词是package,代表了一组特定功能的源码集合。

yu_qin_的博客 1112

【Node.js】深入了解NPM包管理工具与包的使用

NPM是一个JavaScript包管理工具,也是Node.js的默认包管理系统。它使开发者能够从全球范围内的共享库中快速找到并安装所需的依赖包,从而极大地简化了JavaScript项目的开发过程。此外,NPM还提供了一个命令行工具,用于创建、管理和发布自己的Node.js包。NPM作为Node.js的默认包管理工具,在JavaScript开发中占据着重要地位。它提供了丰富的功能来帮助开发者安装、管理和发布包,并且通过文件来简化依赖管理。

lph159的博客 1735
上一篇: 包管理工具--》npm的配置及使用(一)
下一篇: 包管理工具--》yarn的配置及使用
琢鸣
琢鸣 新星创作者: 前端开发技术领域 新星创作者: 前端开发技术领域
博客等级 码龄7年 9626粉丝 53原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琢鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值