pnpm怎么同时使用多个镜像源?

https://github.com/pnpm/pnpm/issues/5581#issuecomment-1448060012
遇到了和这个issue一样的问题,在npm yarn种这种操作是可行的

pnpm add vue@^3 --registry=https://registry.npmmirror.com(... OK)
pnpm add element-plus --registry=https://mirrors.cloud.tencent.com/npm/(...Error)

但是在pnpm中会报错

This modules directory was created using the following registries configuration: {"default":"https://registry.npmjs.org/"}. The current configuration is {"default":"xxxxxx我是私有源urlxxxxxxxx"}. To recreate the modules directory using the new settings, run "pnpm install".

所以如何在使用npm源的同时,某个私有包使用自己的私有源?

在pnpm7.x中支持在.npmrc中配置scope

@babel:registry=https://example.com/packages/npm/ will enforce that when you use pnpm add @babel/core, or any @babel scoped package, the package will be fetched from https://example.com/packages/npm instead of the default registry.

但是我的私有包没有做@(scope)这个符号开头,如果不写@,myPackage:registry=xxx也是不行的

阅读 5k
3 个回答

chatgpt的回答,你可以试试

如何在 PNPM 中同时使用多个镜像源
要在 PNPM 中使用多个镜像源,可以在 .npmrc 文件中指定它们。.npmrc 文件是 npm 和 PNPM 的配置文件。

要将镜像源添加到 .npmrc 文件中,可以使用以下命令:

npm config set registry <registry-url>

例如,要添加 https://registry.npm.taobao.org/ 镜像源,可以使用以下命令:

npm config set registry https://registry.npm.taobao.org/

要使用多个镜像源,可以将多个镜像源 URL 添加到 .npmrc 文件中。例如:

registry=https://registry.npm.taobao.org/
@mycompany:registry=https://npm.mycompany.com/

这将使用 https://registry.npm.taobao.org/ 镜像源来下载除了以 @mycompany 开头的包之外的所有包,而以 @mycompany 开头的包将使用 https://npm.mycompany.com/ 镜像源。

在您的代码库中,您可以检查 .npmrc 文件以查看是否已指定任何镜像源。您还可以修改 .npmrc 文件以添加其他镜像源。

希望这可以帮助您!如果您有任何进一步的问题,请告诉我。

在package.json文件中设置包的绝对下载地址:
package": "http://192.x.x.x:8868/package/-/package-2.0.0.tgz"
可以试试

方法一:通过配置.npmrc文件

registry=https://registry.npm.taobao.org/
 
:scope1::
registry=https://npm.pkg.github.com/

:scope2::
registry=https://npm.pkg.com/

在上面的例子中,包含 scope1 的包将优先使用 GitHub 的镜像源,包含 scope2 的包将优先使用 npm 的镜像源,其余包将使用淘宝的镜像源

方法二:在pnpm-workspace.yaml文件中配置镜像源

packages:
  - '*'
overrides:
  'react':
    registry: 'https://registry.npm.taobao.org'
  '@my-scope/*':
    registry: 'https://my-custom-registry.com/'

在这个例子中,我们指定了react包从https://registry.npm.taobao.org拉取,以及所有@my-scope范围的包从https://my-custom-registry.com/拉取。这样做可以加速依赖的下载,特别是在某些地区网络不佳时

推荐问题
logo
Microsoft
子站问答
访问
宣传栏