许多 Web 项目使用 npm 来提取它们的依赖项,无论是前端还是后端。 npm install
即可开始,将数千个文件提取到我们项目中的 node_modules
文件夹中,以 import
/require
任何内容。 它是 Web 开发伟大机器中的一个重要齿轮。
虽然我不认为 npm 仓库曾经受到过有意义的挑战,但围绕它的技术经常面临竞争。 Yarn 在一段时间内确实起飞了。 Yarn 拥有锁文件,这有助于我们确保我们的同事开发人员和环境具有完全相同版本的软件,这非常有利。 它还在幕后做了一些魔法,使其非常快。 从那时起,npm 现在也拥有锁文件,传言说它一样快,甚至更快。
我不知道是否要建议你采用哪种方式,但我确实发现,另一代下一代 npm 拉取器-下推器-东西即将面世,令人着迷。
我真的很喜欢
pnpm
的想法,但我不得不放弃它,因为它没有正确链接所有依赖项。 例如,当我运行npmx create-react-app y-app
时,它确实非常快地生成了 node_modules,因为所有文件都已下载,我喜欢在我的磁盘上不再有相同的文件的想法,只有一个指向原始包的符号链接,但是当我必须运行服务器时,它说缺少一些依赖项,我很伤心,不得不放弃它。感谢分享 pnpm 歌曲.. 我也喜欢它..
Yarn 也正在开发类似于 tink 的“pnp”模式
我一直尝试使用 monorepo,使用 Lerna 和 Yarn Workspaces 在根级别管理仓库依赖项。 “子”应用程序/包仅在它们与根不同时才安装自己的依赖项(这可能意味着不同的包,或者只是不同的版本)。
作为这种“发现之旅”的一部分,我发现
yarn
比npm install
快得多,尤其是在设置 CI 构建管道时。 大约快 25%。这是针对包含 3 个 Create React Apps(V2)的 monorepo,其中 1 个是 Storybook 库,另外 2 个是该库的消费者。