如何创建 verdaccio 的离线私有注册表



我用verdaccio创建私有npm registry

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

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

我必须在目录中的每个包中运行npm publishnode_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:UsersAdminDesktoptest ngng-prjnode_modulesacorn
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?

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

这里 Verdaccio 维护者.

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

你想要的是一个包含所有依赖项的脱机注册表。发布所有node_modules是不切实际的,几乎是不可能的。

更多成功发布 但在某些情况下,我遇到了错误。 例如在区域中.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. Restart Verdaccio
  2. 根据需要重复该过程。

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

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

我希望这对你有所帮助。此外,还有其他与离线模式相关的实践,但仅限于纱线。

我们使用了胡安·皮卡多(Juan Picado(上面的建议。以下是我们所做的:

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

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

相关内容

  • 没有找到相关文章

最新更新