重学NPM

本文介绍了NPM的使用,包括npm init、install、scripts、npx的用法,以及Semver的概念。重点讨论了npm install的不同模式、peerDependency的作用和scripts在项目中的常见应用。此外,还提及了如何利用npx执行一次性命令和解决环境变量问题。最后,文章简要概述了语义化版本(Semver)的规则,帮助读者更好地理解如何与npm包进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

什么?npm还要学么?确实不咋需要学,所以推荐你看这篇文章。

你用的npm

前些日子Github把NPM纳入自家后宫,这个完虐pip的最大的包管理器从此也有了微软的印记。最近想打包个项目发到NPM上去,自然要对npm进行全面的学习。

我们平时使用npm,大多是使用npm run scripts,npm install xxx之类的,所以下面的讲解首先从npm install这种最常见的开始。

npm init/install/scripts

npm init --yes,初始化项目文件时候使用,这个没什么好说的。

npm install,这个就有的说了,后面跟着的是一个package,这里我们不介绍详细的npm版本更新对于package安装带来的内在改变,还是从使用来说。

我们知道npm install主要有四种方式:

npm install xxx
npm install --save xxx(-S)
npm install --save-dev xxx(-D)
npm install -g xxx

首先第一个我们知道是,第一种情况下,当我们npm install时是不会自动安装的,所以一般没啥场景需要这个。
第二种则是生产依赖,dependency下,第三种是开发依赖,dev-dependency下。
第四种是全局安装,这个没什么好讲的。

提到了dependency那就不得不说说剩下的peerDependency,平时这个东西很少用到,一般与某些插件开发相关。这篇文章很好的讲解了peerdep的情况,总结一下就是a插件依赖b包的版本,1.0的b包支持,2.0的b包不支持,这样我们在a插件的peerdev指定b的版本后,当我们安装a和2.0b的时候就会报警告:

UNMET PEER DEPENDENCY ...

除此之外,发布组件库时因为React之类的东西也不应该放在dependency中,但是我们知道没有React,这个组件库也没有意义,所以我们需要peerdependency为我们做个提醒。

最后是scripts,这个可能是我们平时手动修改package.json最多的选项了,修改之后就能使用npm run…来执行某指令,同时也不用担心没有配置环境变量之类的问题。

npx

npx是相对新一点的东西,但是非常好用。

首先npx 可以下载而不安装某个东西,典型的就是CRA这种只运行一次的脚手架工具,当然网速也是个问题。

其次npx可以执行内部指令而不用担心环境变量的问题。

最后还可以执行Github一些模块。

其他

还有一些是package.json的字段,这里简单列举几个常用的:

  "description": "React Component Library",
  "author": "eswang",
  "license": "MIT",
  "keywords": [
    "React",
    "Component",
    "UI",
    "Material"
  ],
  "homepage": "",
  "repository": {
    "type": "git",
    "url": "https://github.com/starinsun/xxx"
  },

Semver

最后是语义化版本,我们熟悉的就是大更新的先行版本alpha: 内部版本,beta:公测版本,rc: 即Release candiate,正式版本的候选版本。

然后是版本号,严格遵守XYZ的规范,如:1.1.1,分为主版本号(如不兼容API),次版本号(向下兼容的新增内容),修订号(向下兼容问题修正)。而上文所说的先行版本则放在这个的后面。

这些东西其实是我们经常忽略的,毕竟现在编辑器插件让我们操作起来package.json也极其方便了:
在这里插入图片描述
兼容模块新发布的补丁版本:~16.2.0、16.2.x、16.2
兼容模块新发布的小版本、补丁版本:^16.2.0、16.x、16
兼容模块新发布的大版本、小版本、补丁版本:*、x

总结

npm还有些指令这里没有讲,如怎么查看全局包:

npm list -g --depth 0

顺带说一嘴yarn是yarn global list,但是npm这样用的话,你可以试试。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值