javascript 从lerna移动到pnpm

zqdjd7g9  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(409)

我目前正在迁移我们的项目从Lerna到PNPM,我们有一个脚本,我们运行我已经张贴在下面

"postinstall": "npm run bootstrap"
"bootstrap": "lerna bootstrap --hoist",
"clean": "lerna clean -y",

是否有Lerna bootstrap命令和Lerna clean命令等效PNPM?

moiiocjp

moiiocjp1#

你不需要任何Lerna bootstrap的等价物,开始使用pnpm工作空间非常简单,你只需要在你的项目根目录下添加一个pnpm-workspace.yaml文件,并添加你的包的位置(通常是packages/
工作区的根目录中必须有pnpm-workspace.yaml文件。工作区的根目录中也可以有.npmrc文件。
提升不推荐使用pnpm,默认情况下是禁用的,但是如果你真的想提升,你可以在.npmrc中使用add shamefully-hoist,参见pnpm doc -shamfully-hoist
默认情况下,pnpm创建了一个半严格的node_modules,这意味着依赖项可以访问未声明的依赖项,但node_modules之外的模块不能。使用这种布局,生态系统中的大多数包都可以正常工作。然而,如果一些工具只在提升的依赖项位于node_modules的根目录时才能工作,那么可以将其设置为true来提升它们。
我不确定lerna clean是否等同,但要从节点模块中删除依赖项,可以按照pnpm doc - remove使用pnpm remove --recursive
当在工作空间内使用时(使用--recursive),从每个工作空间包中删除一个(或多个)依赖项。
当不在工作区中使用时,从子目录中找到的每个包中删除一个(或多个)依赖项。
您可以在Lerna-Lite pnpm-workspace.yaml中看到一个示例,我建议您看一看Lerna-Lite,也许不要完全给予Lerna,当不再维护Lerna时,我创建了Lerna-Lite fork(现在是),最大的区别是Lerna-Lite只有原始Lerna命令的子集(您提到的所有Lerna命令都不在Lerna-Lite中,因为现在所有的包管理器都比Lerna更好地处理这些命令),另一个不同之处是它要小得多,因为我还将一些命令作为可选包进行了移动,并且在核心CLI中仅保留了versionpublish,我也不喜欢Lerna现在的变化和方向(它正在成为另一个Nx产品,因为Lerna v6需要Nx在幕后,而Lerna-Lite不是这样,Nx可以与Lerna-Lite一起安装,但它是可选的,这是它永远的方式)。

相关问题