0

npm registryverdaccio.

我希望能够运行npm install --registry="http://localhost:4873"并从 private 获取所有依赖项registry

我需要从我的项目node_modules目录中发布所有包。

我必须npm publish在目录中的每个包中运行node_module。(我找不到更好的方法。)

其中更多成功发布但在某些情况下,我遇到了错误。例如在zone.js包装中:

npm ERR! code ELIFECYCLE npm ERR! errno 2 npm ERR! zone.js@0.8.29

prepublish: `tsc && gulp build` npm ERR! Exit status 2 npm ERR! npm

ERR! Failed at the zone.js@0.8.29 prepublish script. npm ERR! This is

probably not a problem with npm. There is likely additional logging

output above. npm WARN Local package.json exists, but node_modules

missing, did you mean to install?

acorn包装:

acorn@5.7.3 build:main C:\Users\Admin\Desktop\test ng\ng-prj\node_modules\acorn

rollup -c rollup/config.main.js

'rollup' is not recognized as an internal or external command,

operable program or batch file.

npm ERR! code ELIFECYCLE

npm ERR! errno 1

npm ERR! acorn@5.7.3 build:main: `rollup -c rollup/config.main.js`

npm ERR! Exit status 1

npm ERR!

npm ERR! Failed at the acorn@5.7.3 build:main script.

npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm WARN Local package.json exists, but node_modules missing, did you mean to install?

有没有一种简单的方法可以做到这一点?

4

2 回答 2

1

这里是 Verdaccio 的维护者。

我希望能够运行 npm install --registry="http://localhost:4873" 并从私有注册表中获取所有依赖项。

您想要的是拥有一个包含所有依赖项的离线注册表。全部发布node_modules是不切实际的,几乎是不可能的。

其中更多成功发布但在某些情况下,我遇到了错误。例如在 zone.js 中

这就是重点,您需要构建每个依赖项,这没有任何意义。一个普通的项目很容易拥有数千个依赖项和子依赖项。更不用说您将失去未来依赖项更新的出现。

因此,您需要正确缓存存储文件夹中的所有依赖项。

  1. 运行 verdaccio$> verdaccio
  2. 确保您在线
  3. npm install --registry="http://localhost:4873
  4. 完成安装后,检查您的本地缓存,请参阅此处如何找到它。您应该能够在缓存中看到所有已解析的依赖项。
  5. 如果您想要真正的离线体验,proxy请将配置文件中的注释如下
packages:
  '@*/*':
    access: $all
    publish: $authenticated
    # proxy: npmjs

  '**':
    access: $all
    publish: $authenticated
    # proxy: npmjs

如果您注释掉proxyVerdaccio 将不会要求对遥控器进行任何更新,默认情况下是npmjs,因此不会执行与外部网络的连接。

  1. 重启 Verdaccio
  2. 根据需要重复该过程。

所以,在这里,这种方法的优点。

  1. 当您重新离线时(您必须再次注释掉代理部分),您将允许 Verdaccio 解决您是否有新的依赖项要缓存(如果您正在使用 semver,例如lodash: ^1.5.6:)
  2. 您将获得真正的安装体验,无需担心拆卸node_modules和清洁npm cache
  3. 存储只是一个文件夹,因此您可以将其移植到另一个地方(通过 USB 或 LAN)
  4. 与多个项目和节点包管理器工具(yarn、npm 或 pnpn)共享缓存
  5. 您不必在 中发布每个包node_modules,因此请参见第 2 点)。

我希望这可以帮助你。此外,还有其他与离线模式相关的做法,但仅限于yarn

于 2019-12-26T08:52:41.910 回答
0

我们在上面使用了 Juan Picado 的建议。这是我们所做的:

  1. 在 /home/verdaccio/config.yaml 编辑 verdaccio 的配置文件
  2. 确保允许代理
  3. 将 npm 注册表设置为指向您的 verdaccio 实例
  4. 在系统上创建一个文件夹(任何文件夹)并运行 npm install 命令来下载包
  5. 检查 /home/verdaccio/storage/ 目录。下载的包及其依赖项现在应该在该目录中。
  6. 编辑 verdaccio 的配置文件,注释掉两个“代理”行,以便关闭代理
  7. 重新启动 verdaccio

此时,运行 npm install 命令只会指向您的 verdaccio 实例,而不会访问 registry.npmjs.com 并且 /home/verdaccio/storage 中的包将是您的离线可用包。

于 2021-06-12T13:24:32.283 回答