前言:
之前把npm link和pnpm link的方式搞混了,网上大多数教程教的是npm link(进入npm包目录,npm link到全局npm,然后进入业务代码npm link 包名),但是实际项目中用的是pnpm,这里重新梳理一下,两者在link的时候的区别如下:
一、npm link
方法一:dist文件直接替换
将npm包打包出来的dist直接复制到业务代码库中进行验证
方法二:npm link
- 组件库根目录
npm link - 业务库根目录
npm link 包名 - 业务库运行
(记得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会有这个包
// 业务使用
import {ElCard} from '@element-plus/components';
3.总结
这种方式的好处就是,直接link到业务代码的node_modulse里面,不需要link到全局,直观