前端项目如何同时导入一个库的不同版本
想要在一个项目中同时存在两个版本的库,目前方法有两种
1. 采用别名导入库(仅为示例,实际只实验了echarts可行)
// package.json{//...."scripts": {// ...},"dependencies": {"@antv/x6": "^2.18.1", // 正常包"@antv/x6-custom": "npm:@antv/x6@1.30.1", // 不同版本的包(采用别名)},// ....
}
问题:对于部分不存在互相依赖的库有用,
规避问题:对所有版本都采用别名(可能有用)
2. 采用workspaces导入不同包(所有包可用)
2.1 定义workspaces,(根目录操作)
// package.json(根目录)
{"name": "xxxx","version": "0.0.0","private": true,"type": "module","scripts": {},"dependencies": {"x6-new": "workspace:*", // 版本1 固定写法"x6-old": "workspace:*", // 版本2 固定写法},"devDependencies": {},"workspaces": [ // 自定义工作区"packages/*"]
}
2.2 pnpm-workspace.yaml 若没有则自己新建(根目录操作)
// pnpm-workspace.yamlpackages:- 'packages/*'
2.3 新建工作区目录结构 其中示例 x6-new x6-old分别为两个不同的工作区 需要分别对工作区执行pnpm init
x6-new/package.json
说明:进入到工作区执行 pnpm init生成工作区的package.json
main: "index.js"指定的是入口文件。将来依赖注入时冲这里查找导出项目
index.js 工作区导出的函数/方法(外部可以引入使用)
最后 项目的node_moudles 和工作区的node_modules只需要在根目录执行一次即可
如何使用自定义工作区(当成一个本地包使用即可)