1

我正在本地运行 TFS 2018,它处于脱机状态,无法访问 nuget.org。我们的努力之一是在开发团队之间协调开源 npm 包。使用 TFS 201,我现在可以在包管理中设置 npm 提要,这可能是一个解决方案。这个想法是获取提要中的所有 npm 包。

到目前为止,我所做的是在面向互联网的盒子上检索这些包(使用npm install ),然后将它们传输到离线盒子(复制整个 npm-cache 文件夹)。然后我将遍历所有 npm 包并将npm publish运行到我的 TFS 注册表。

对于大多数软件包,这很好用。有许多带有预发布脚本的软件包,或者同样会出现错误。我仍然可以使用 --force ( npm publish -f ) 在注册表中获取它们。但是,我不确定这是否真的有效,因为我无法安装其中的一些。我得到一个 ENOENT errno -4058。一个例子是橡子回购。

我想知道是否有更好的方法来解决这个问题?这些包可能有批量上传选项。

4

2 回答 2

0

首先,您可以设置一个可以访问 Internet 的构建代理,TFS 可以是 Intranet 可访问的。

其次,您可以尝试更改包含必要包的默认 npm-cache 目录,然后通过npm-cache安装包。

另一方面,您可以将包包含到源代码管理中。

于 2018-05-09T08:50:09.563 回答
0

在这里回答我自己的问题作为唯一的其他建议答案并没有解决将包放入 TFS 包提要保持脱机的想法。

将 npm tarball (.tgz) 发布到 TFS npm 包存储库没有失败。而在此之前,我试图使用缓存中的包进行发布。我找到了一个特定的 npm 包 ( npm-package-downloader ),它允许我下载必要的 npm 包及其依赖项。然后我将这些 tarball 转移到离线 tfs 盒子并使用npm publish <package>.

完整的工作流程是:

  1. (可上网的盒子)npm install -global npm-package-downloader
  2. (可上网的盒子)npmDownload -d -e -a -o "<path>" -p "pkg1 pkg2 etc"
  3. (互联网可访问框)从 #2 开始压缩(即使 npmDownload 有 zip 选项,这总是坏掉)
  4. (互联网访问框)将 zip 传输到离线框
  5. (离线框)解压文件
  6. (离线框)npm set registry <tfs registry>
  7. (离线框)对于每个 .tgz npm publish <pkg.tgz>。请注意,我使用 powershell 为我执行此操作。
于 2018-05-16T20:24:34.790 回答