前端工具人的日常学习20220817

继续摸鱼!

今天大概搞两样,一是npx,二是继续umi


npx做一个昨天的补充,然后今天还看到个pnpm也一起写上

·npx是npm从v5.2.0开始新增了npx命令,>=该版本就会自动安装npx

没有就手动装一下,反正是有手就行

。。。。

npm install -g npx


npx的作用:

npm只能管理包的依赖,npx则可以快捷的运用包中的命令行工具和其他可执行文件,让内部安装的模块用起来更方便。


执行  npx   相关命令的时候,npx会先本地找(可以是项目的也可以是本机的)寻找这个command

·找到了:就用本地的版本

·没找到:直接下载最新版本(这里是在缓存里),完成命令要求

·使用完之后就会完全清楚,不会在本机或项目留下任何东西

·这样就不会污染本机、永远使用最新版本的dependency(依赖)


使用场景

在本地装了一个依赖之后,你直接运行使用是会报错的,那要怎么使用换这个依赖呢

方法一:

使用package.json的script脚本

//package.json

"scripts":{

  "findmocha":"mocha --version",

}

像这样,你就去执行findmocha就好了(npm run findmocha)

方法二:在命令行中直接找到模块的二进制文件运行

方法三:全局安装模块

厉害的来了

npx,我们可以直接使用命令执行我们要运行的的命令:

npm i -D mocha

npx mocha --version

不用全局安装,直接在命令行执行一次性命令

(有很多命令,我们只需要执行一次的,但是却要全局安装一次,实在不科学,而使用npx,可以在不全局安装的情况下,运行命令,而且运行完就会自动删除,不会污染全局环境)

比如:npx creat-react-app spikekk-react-app

npx将cra下载到一个临时目录,使用后删除。每次运行这个命令,都会重新下载依赖包,运行后删除。


那么npx还可以干啥呢?

切换node版本,版本之间的玄学问题可不是你我凡人能搞的,最好就是切版本,当然切换版本有很多种方式

这个算一种(用完自动删的那种。。。。额)

npx的-p选项指定要安装的包,并将其添加到正在运行的$PATH中

如:npx node@6 -v

它会自动下载需要的node,执行完命令后删除


npx原理:

1、去node_modules/.bin路径检查npx后的命令是否存在,找到后执行

2、找不到,就去环境变量$PATH里面,检查npx后的命令是否存在,找到之后执行

3、害找不到,自动下载一个,用完自动删(懂我!)



pnpm

今天林三心发了个文章刚好介绍了pnpm,那就记录一下吧

用 npm init 初始化一个项目,然后 npm i vue

我们可以发现node_modules中不止有vue一个包

这是因为vue他直接或间接的引用了这些包,所以npm会将这些包,所以npm会将这些包 拍平 安装在node_modules中

然后这些包呢,有一天你更新了vue,升级了哎,就不再依赖其中的某些包了,那么问题来了,这些包还是在里面,我们称这些包为幽灵依赖,那咋解决

pnpm就派上用场了

用 pnpm init 初始化一个项目,然后 pnpm i vue

我们发现除了node_modules文件夹里面vue之外的依赖都去了.pnpm这个文件夹里面,而且vue的文件夹后面还有个回车符号

这个标志意思就是,这个node_modules中的vue文件其实是个软链接。意思就是它不在这儿,这是个壳,占个位置,它引用了其他地方的资源。

这就解决了幽灵依赖的问题。

pnpm安装:npm install pnpm -g


好了该继续umi了

环境准备

pnpm dlx create-umi@latest

直接选,一键完成项目初始化

你可能感兴趣的:(前端工具人的日常学习20220817)