pnpm 的包管理器替代品都有哪些?

Posted

技术标签:

【中文标题】pnpm 的包管理器替代品都有哪些?【英文标题】:What are some package manager alternatives to pnpm?pnpm 的包管理器替代品有哪些? 【发布时间】:2018-06-13 16:49:06 【问题描述】:

我最近开始使用pnpm 作为我的节点模块的包管理器。此下载仅允许将一个版本的软件包仅保存在磁盘上一次。这通过仅下载上述下载在全局范围内尚不存在的包来节省我的硬盘空间。我想知道是否有任何其他可行的选项可以帮助不必为每个新项目运行“npm install”。提前致谢。

【问题讨论】:

我一直在考虑添加一些 Git 挂钩,以便在我克隆项目或切换分支时自动运行 npm install 【参考方案1】:

您可以通过 Facebook 试用 Yarn:https://yarnpkg.com/en/

来自他们的网站:

Yarn 会缓存它下载的每个包,因此它永远不需要再次下载它。它还可以并行化操作以最大限度地利用资源,因此安装时间比以往更快。

但是,您仍然需要为每个包运行 yarn install。我不认为在不同的安装之间“共享”包是非常理想的。如果您必须对包文件进行一次性更改怎么办?这会影响你所有的项目。

【讨论】:

谢谢!我会更多地研究纱线。此外,关于在不同安装之间“共享”包的要点。我会记住这一点。 pnpm 重新下载修改过的包,所以这不是问题。甚至还有一个单独的命令来检查 node_modules/store 中的包是否被修改:pnpm store status。此外,pnpm 不仅允许通过硬链接导入包,如果您愿意,还可以使用 package-import-method 配置重新链接或复制包。 当心yarn uses a more brittle method of symlinking packages than pnpm。这可能会导致problems in monorepos。【参考方案2】:

您到底想避免/对您的包管理器做什么? Yarn 非常易于使用,并基于 package.json 构建所有依赖关系。

每次创建新项目时,npm install 都必须运行,因为它构建了将用于 node_modules 的 node-modules。无论你使用 Yarn 还是 pnpm,你仍然需要做相当于 yarn add 等的操作。

对于管理许多依赖项,yarn 非常好,因为您可以yarn add [insert package here]yarn start

【讨论】:

我只是想避免为每个新项目创建这么大的文件。 好吧,您可以将项目配置为指向相同的 bin,但这很快就会成为依赖项的噩梦,不推荐这样做。 是的,我会避免这样做。再次感谢。【参考方案3】:

pnpm 中有一个新的 beta 命令,允许同时在多个项目中进行安装。它被称为pnpm recursive install

运行 pnpm help recursive 以查看文档。从pnpm@1.25 开始,它会打印:

pnpm 递归 [并发] 安装

实验性!同时在所有子目录中运行安装,package.json(不包括 node_modules)。 选项:与pnpm install 相同


pnpm 递归 [并发] 更新

实验性!同时在所有子目录中运行更新,package.json(不包括 node_modules)。 选项:与pnpm update 相同

据我所知,pnpm 是目前唯一具有此功能的 Node.js 包管理器。


或者,您可以使用一些 monorepo 管理工具,例如 lerna。它将为您在每个项目中运行包管理器。不过它会比pnpm recursive 慢很多。

【讨论】:

以上是关于pnpm 的包管理器替代品都有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

使用scoop包管理器

pnpm,npm 与 yarn 后出现新一代好用的管理器

nodejs Yarn替代npm的包管理——快速安全可靠性高的依赖管理

Yarn-新型JavaScript包管理器

Node如何获取pnpm安装的包源码真实代码路径并操作

Node如何获取pnpm安装的包源码真实代码路径并操作