pnpm 对等依赖项自动安装

fed*_*me1 46 javascript node.js eslint pnpm vite

如何(或在哪个文件上)设置 true 来自动安装依赖项?

我的终端错误:

我的终端错误

提示:如果您希望自动安装对等依赖项,请将“auto-install-peers”设置设置为“true”。提示:如果您不希望 pnpm 在对等依赖问题上失败,请将“strict-peer-dependencies”设置设置为“false”。

auto-install-peers = true
Run Code Online (Sandbox Code Playgroud)

mrm*_*hal 76

pnpm 使用 npm 的配置格式。因此,您应该以与 npm 相同的方式设置配置:

pnpm config set auto-install-peers true
Run Code Online (Sandbox Code Playgroud)

注意:上述命令使用默认配置位置,该位置存储本地用户帐户的设置(~/.npmrc对于 Linux 为 at,对于%USERPROFILE%\.npmrcWindows 为 at)。要将项目内的设置存储在.npmrc可以签入版本控制的文件中,您可以使用@ZoltanKochan指出的方法,或者等效地附加--location project到命令:

pnpm config set auto-install-peers true --location project
Run Code Online (Sandbox Code Playgroud)


Zol*_*han 34

您需要.npmrc在项目的根目录下创建一个包含以下内容的文件:

auto-install-peers=true
Run Code Online (Sandbox Code Playgroud)

mrmashal 的答案也适用,但仅限于您本地。因此,当其他人获取您的存储库时,他们不会自动安装对等点。


Moh*_*lal 16

v7 中的 npm 会自动安装,pnpm 不会

npm从 v7开始。是否自动安装对等依赖项https://github.com/npm/rfcs/blob/main/implemented/0025-install-peer-deps.md

pnpm 不会自动执行此操作。即使在这个阶段。 https://github.com/pnpm/pnpm/discussions/3995#discussioncomment-1893230

npm 仅以相同的方式执行.npmrc

auto-install-peers = true
Run Code Online (Sandbox Code Playgroud)

auto-install-peers=true 现在使 pnpm 的工作方式与 npm v7 相同。来自 pnpm v7.1.3(参考

.npmrcnot automatic相关开发人员的选择。有些人支持,有些人不支持。(参考1参考2

.npmrc

为此,您必须创建一个.npmrc文件并添加:

auto-install-peers = true
Run Code Online (Sandbox Code Playgroud)

这是最好的办法。因为它为使用该项目和存储库的所有开发人员创建了一致性。相同的配置。

因此,简单来说,如果您有一些需要对等的软件包,只需添加配置即可。您会收到一个很好的警告,提醒您是否存在带有peer-dependencies.

https://github.com/pnpm/pnpm/discussions/3995#discussioncomment-2797582

auto-install-peers=true 现在使 pnpm 的工作方式与 npm v7 相同。从 pnpm v7.1.3 开始

arg 存在吗--auto-install-peers?(不)

没有--auto-install-peersarg。

可以在此处检查功能,请在此处询问https://github.com/pnpm/pnpm/issues/5284

被拒绝了。

原因是可以理解的。.npmrc更利于一致性。这样人与物的pnpm install作用总是一样的。没有忘记任何事情。

使用 install-peerdeps

我建议使用.npmrc. -> 本机。直接向前。

注意:您可以考虑这个工具。如果您遇到一些 pnpm 错误(例如:1、 )以及与对等依赖项处理不一致。许多问题尚待解决。我会一起去.pnpmrc first。如果有任何问题。我会使用这个工具。

https://www.npmjs.com/package/install-peerdeps

install-peerdeps支持pnpm。

eslint-config-airbnb例如,该工具被提及。

例子:

npx install-peerdeps --pnpm <your-package>

# or

npx install-peerdeps -P <your-package>

# as dev dep
npx install-peerdeps -P -D <your-package>

# Peers only
npx install-peerdeps -P -D --only-peers <your-package>
# or
npx install-peerdeps -P -D -o <your-package>

Run Code Online (Sandbox Code Playgroud)

该包将根据使用的标志自动将依赖项添加到package.jsonindependencies或中。devDependencies


小智 8

通过运行以下命令删除节点模块:

rm -rf node_modules
Run Code Online (Sandbox Code Playgroud)

然后再次运行:

pnpm install
Run Code Online (Sandbox Code Playgroud)


may*_*513 6

我必须.npmrc在项目的根目录下创建auto-install-peers=true,然后删除该pnpm-lock.yaml文件并运行pnpm i --shamefully-hoist