包管理工具--》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万+

11-4 AEB 算法原理及系统组成

本专题旨在探讨如何利用仿真软件开发自动紧急制动系统AEB,主要通过整理开发流程,实现从需求到验证的全流程掌握,为后续开发提供支持;同时,研究了如何在汽车自动驾驶仿真工具中开发自己的算法,并解决了从ISO、E-CNAP、GB/T以及交通法规等提炼出功能需求的问题,以快速实现原型模型的开发。本专题重点讲解了AEB的工作原理、系统/软件架构和需求、算法模型及实现、CCRs/CCRb/CCRm建模与仿真、VRU-AEB-B/P/M建模与仿真,同时还提供了测试用例,期待将AEB算法成功地产品化。

AIgraphX 8551

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

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

gitblog_01066的博客 793

【FPGA】定点数运算中的位宽优化与截取策略

本文深入探讨了FPGA定点数运算中的核心挑战——数据位宽优化与截取策略。针对定点数在加法、乘法等运算中位宽膨胀的问题,文章详细分析了位宽变化规律,并对比了直接截断、四舍五入和收敛舍入三大截取策略的优缺点及硬件实现方法。通过实战指南与避坑经验,旨在帮助开发者在保证计算精度的同时,高效利用FPGA资源,实现性能与面积的平衡。

weixin_29181861的博客 116

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

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

qq_45569925的博客 1704

关于SVPWM七段式五段式调制后的相电压和线电压波形——大疆DJI技术笔试

1.SVPWM七段式/五段式调制的相电压和线电压波形 脉宽调制(PWM)在并网变流技术中得到了广泛的应用。与正弦脉宽调制(SPWM)的控制方法相比,SVPWM方法具有直流侧电压利用率高,电压谐波小,易于数字化实现等显著的优点,从而使SVPWM在实际的应用中越来越普遍。TMS320F28335是32位浮点的DSP控制器,具有150MHz的高速处理能力,18路PWM输出,与前几代数字信号控制器相比,性能平均提高了50%。其中具体的SVPWM理论实现的原理,请参考我的博客永磁同步电机的矢量控制策略(七)一一一SV

昔时扬尘处 2万+

中介效应、调节效应与交互效应:从概念辨析到统计建模全指南

在社会科学与数据分析研究中,理解变量之间的因果关系与条件性影响是核心任务之一。回归分析作为最基础的统计工具,常被用于探索自变量对因变量的作用机制,而中介效应与调节效应则分别回答了“如何影响”与“何时影响不同”的深层问题。中介效应通过路径分析拆解因果链条,揭示内部的传导机制;调节效应则借助交互项识别影响的边界条件。Bootstrap法已成为检验间接效应的主流手段,而简单斜率分析则让调节作用的模式更加直观。无论是用户研究、医学统计还是产品数据分析,掌握这些模型都能帮助研究者构建更具解释力的实证框架。本文基于大量

weixin_29051149的博客 330

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

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

Ghmin的博客 1980

迭代牛顿-欧拉法——机器人动力学逆解

迭代牛顿-欧拉法牛顿欧拉法的步骤向外回归(outward recursion)step 1step 2向内回归(inward recursion)step 3step 4牛顿欧拉法的三种形式无坐标系NE算法(Coordinate-Free Algorithm)连杆坐标系NE算法(Link-Coordinates Algorithm)3-D向量NE算法 牛顿欧拉法的步骤 牛顿欧拉法(NE)是求解机器人动力学逆解的一种方法。动力学逆解定义为:已知机器人的构型qqq和运动的速度q˙\dot{q}q˙​和加速度q¨

qq_41845878的博客 4096

npm 包管理工具

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

奇遇少年 1731

后向投影算法(BPA)-SAR成像算法系列(二)

SAR成像算法:后向投影算法(BPA)原理介绍及实现步骤解析。

yjh_2019的博客 1万+

保姆级教程:用MATLAB搞定双目相机标定,从导入图片到参数解读全流程

本文提供了一份详细的MATLAB双目相机标定全流程指南,涵盖从图片准备到参数解读的每个环节。重点讲解了棋盘格选择、拍摄技巧、MATLAB工具箱设置及参数优化,帮助读者避免常见错误并提升标定精度。特别适合机器人导航、三维重建等领域的开发者。

weixin_33737134的博客 429

了解npm:JavaScript包管理工具

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

huaqianzkh的专栏 1630

AUTOSAR TcpIp模块 以太网配置开发2

someip协议之tcpIp协议

汽车电子电气 1085

包管理工具npm yarn

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

Go_going_的博客 1733

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

大剑师兰特的GIS世界 2747

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

包管理工具,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、付费专栏及课程。

余额充值