继续摸鱼!
今天大概搞两样,一是npx,二是继续umi
npx做一个昨天的补充,然后今天还看到个pnpm也一起写上
·npx是npm从v5.2.0开始新增了npx命令,>=该版本就会自动安装npx
没有就手动装一下,反正是有手就行
。。。。
npm install -g npx
npx的作用:
npm只能管理包的依赖,npx则可以快捷的运用包中的命令行工具和其他可执行文件,让内部安装的模块用起来更方便。
执行 npx
·找到了:就用本地的版本
·没找到:直接下载最新版本(这里是在缓存里),完成命令要求
·使用完之后就会完全清楚,不会在本机或项目留下任何东西
·这样就不会污染本机、永远使用最新版本的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
直接选,一键完成项目初始化