当我将客户的项目从CRA迁移到Vite时,我遇到了很多问题。其中一些是由于某些特定于WebPack的进口,其他是我使用pnpm
而不是npm
。
这不是一个明智的举动,迁移到另一个构建工具以及另一个软件包管理器。因此,我切换回使用npm
完成我的Vite迁移,修复了错误,所有这些都很好。
当我尝试再次使用pnpm
并使用它安装软件包时,它一直抛出许多错误,这些错误未安装x,y,z,这很奇怪,因为npm
版本可以正常工作!
通过pnpm import
,现有的锁定文件被解析并生成pnpm-lock.yaml
,因此锁定文件应具有相同的内容。
的确,锁定文件中提到的所有依赖项都将由pnpm
安装而无故障。但是,由于npm
如何安装软件包及其依赖项,您会发现自己能够使用软件包的依赖项而无需明确安装。
这正是发生的事情,特别是date-fns
和其他一些软件包。 npm
如何构造您的node_modules/
允许您导入date-fns
,即使它不作为package.json
中的依赖性存在,只要其他包裹取决于它。
底线,显式比隐式好。
我下载了失踪的包裹,就像一个好男孩一样,生活在ð中移动。
参考
我跟随this article从CRA切换到Vite,非常有帮助。