pnpm link&npm link使用

1,882 阅读2分钟

前言:

之前把npm link和pnpm link的方式搞混了,网上大多数教程教的是npm link(进入npm包目录,npm link到全局npm,然后进入业务代码npm link 包名),但是实际项目中用的是pnpm,这里重新梳理一下,两者在link的时候的区别如下:

image.png

一、npm link

方法一:dist文件直接替换

将npm包打包出来的dist直接复制到业务代码库中进行验证

方法二:npm link

  1. 组件库根目录npm link
  2. 业务库根目录npm link 包名
  3. 业务库运行

(记得unlink)

二、pnpm link

备注:pnpm管理的项目,直接替换dist文件是没有用的,也就是npm link中的方法一是不生效的

1. 执行pnpm link

准备两个代码库,应用场景是把本地开发的组件库,在业务代码库里进行调试

// 组件库
├─ src
│  ├─ components // 各个组件
│  │  └─ video 
│  │  └─ swiper
│  │  └─ ...
└─ package.json

// 业务代码
省略哈,这不重要

进入业务代码库根部

$ pnpm link 组件库根目录地址 --dir node_modules/包名

# 示例
pnpm link /Users/xxx/Desktop/element-plus-dev/packages/components --dir node_modules/@element-plus/components

# 其实就是将本地的组件库,link到了业务代码库的node_modules下,这样就能在业务代码库node_modules下找到这个包,正常引用就行,和通过npm下载的方式一样
  • 需要注意的是,虽然我这里用了代码库根部来进行描述,但是不要太死板,各个代码库结构都不一样,视情况而定哈,总之就是把npm包link到业务代码的node_modulse里面

2. 业务使用

此时业务代码的nodemodules会有这个包

image.png

// 业务使用
import {ElCard} from '@element-plus/components';

3.总结

这种方式的好处就是,直接link到业务代码的node_modulse里面,不需要link到全局,直观