我目前正在迁移我们的项目从Lerna到PNPM,我们有一个脚本,我们运行我已经张贴在下面
"postinstall": "npm run bootstrap" "bootstrap": "lerna bootstrap --hoist", "clean": "lerna clean -y",
是否有Lerna bootstrap命令和Lerna clean命令等效PNPM?
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中仅保留了version和publish,我也不喜欢Lerna现在的变化和方向(它正在成为另一个Nx产品,因为Lerna v6需要Nx在幕后,而Lerna-Lite不是这样,Nx可以与Lerna-Lite一起安装,但它是可选的,这是它永远的方式)。
pnpm-workspace.yaml
packages/
.npmrc
shamefully-hoist
node_modules
true
lerna clean
pnpm remove --recursive
--recursive
version
publish
1条答案
按热度按时间moiiocjp1#
你不需要任何Lerna bootstrap的等价物,开始使用pnpm工作空间非常简单,你只需要在你的项目根目录下添加一个
pnpm-workspace.yaml
文件,并添加你的包的位置(通常是packages/
。工作区的根目录中必须有
pnpm-workspace.yaml
文件。工作区的根目录中也可以有.npmrc
文件。提升不推荐使用pnpm,默认情况下是禁用的,但是如果你真的想提升,你可以在
.npmrc
中使用addshamefully-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中仅保留了
version
和publish
,我也不喜欢Lerna现在的变化和方向(它正在成为另一个Nx产品,因为Lerna v6需要Nx在幕后,而Lerna-Lite不是这样,Nx可以与Lerna-Lite一起安装,但它是可选的,这是它永远的方式)。