pnpm或者npm v7的monorepo项目怎么进行本地开发调试?-灵析社区

我想对你说

请问在创建monorepo时如何进行本地开发调试,我了解到创建monorepo项目的两种方式为pnpm、npm的workspace。 我创建了一个示例代码库 [https://github.com/jervainy/demo-monorepo.git](https://link.segmentfault.com/?enc=gpIKvjU%2BZgZju4OVBUcJ2g%3D%3D.mq%2BfZBkQPr3Q3FyNnO1xDVwGdmhlrXi1lF9bds7NQ0ie20PUYKeJ%2Fy%2FmbFzjsCnf), 有两个工程,lerna-workspace-demo 采用npm workspace方式创建的monorepo项目;pnpm-workspace-demo 采用pnpm创建的monorepo项目。这两个项目中pkg0引用utils模块,采用vite打包。 当我将package.json中的main、module指向为lib/main.js时,utils中修改了内容后在pkg0中能马上刷新访问,但这会导致打包的文件不安全; 如果指向dist文件则不能实现热更新。**如果将main指定为dist,怎样才能实现热更新?** 开源项目tiptap [https://github.com/ueberdosis/tiptap.git](https://link.segmentfault.com/?enc=QYIXWXxq2DjgMFFy8AVFlw%3D%3D.nN1aU8ZX8%2FJWF1Gk%2BO4DQXe%2FvxpkWzFWfXAZS7RqtIpyPCTbhbZWiNN82PxPTK6b)是采用的npm workspace创建的monorepo项目,package.json中main指向的dist文件,能进行热更新,采用的rollup打包; **请问为什么tiptap能实现热更新** 我看过采用pnpm的项目,例如nuxt、vue3等,**使用pnpm创建项目后同时也会在package.json中声明workspace,这是为什么,pnpm创建的monorepo项目如何实现热更新**

阅读量:179

点赞量:0

问AI
自己找到解决方法了,AI Bot提供的方式也可行,但是不方便,AI Bot是通过watch项目不断去更新dist目录实现的。 我另外找到了两种方案: 第一种方案是tiptap的解决方案,研究了几天后发现了他的方案,tiptap是通过设置别名实现的,例如 { resolve: { alias: { "@tiptap/core": "/Users/xxxx/tiptap/packages/core/src/index.ts" } } } 第二种方案是条件导出,参加package.json文件 { exports: { ".": { "import": "./dist/your-package.modern.js", "require": "./dist/your-package.cjs.js", "./*": "./dist/your-package.*.js" }, // 为开发环境设置特定的导出 development: { "./": "./src/index.js", "./*": "./src/*.js" }, // 为生产环境设置特定的导出 production: { "./": "./dist/your-package.min.js", "./*": "./dist/*.min.js" } } } 当设置了 NODE_ENV 环境变量时,exports 字段会根据 import 和 require 导入方式提供不同的模块实现。