You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

离线TFS 2018部署:如何将开源npm包导入内置npm源?

嗨,我来帮你一步步搞定这个离线npm源的搭建问题!你已经把外网的npm-cache复制到离线机器了,接下来按照下面的步骤操作就行:

从npm缓存到TFS 2018 npm源的完整流程

第一步:从npm-cache中提取对应的npm包文件

npm缓存里的包都存放在以哈希值命名的嵌套文件夹里,直接找起来很麻烦。你可以在离线机器的npm-cache目录下执行这条命令,快速定位所有.tar.gz格式的包文件:

find . -name "*.tar.gz" -type f

把搜索到的所有.tar.gz文件复制到一个单独的文件夹(比如/tmp/offline-npm-packages),这样后续发布操作会更方便。

第二步:配置npm指向TFS 2018的npm源

首先得确认你的TFS npm源地址,一般格式是:
http://<你的TFS服务器地址>:8080/tfs/<项目集合名称>/_packaging/<你的npm源名称>/npm/registry/

2.1 添加并设置TFS源为默认

执行这条命令让npm默认使用TFS的离线源:

npm config set registry http://<你的TFS服务器地址>:8080/tfs/<项目集合名称>/_packaging/<你的npm源名称>/npm/registry/

2.2 配置TFS源的身份验证

TFS的包管理需要身份验证,你可以用TFS的个人访问令牌(PAT)或者域账号来配置:

npm adduser --registry=http://<你的TFS服务器地址>:8080/tfs/<项目集合名称>/_packaging/<你的npm源名称>/npm/registry/

执行后按照提示输入用户名、密码(用PAT的话直接填PAT内容)、邮箱即可完成身份配置。

第三步:批量发布提取的npm包到TFS源

切换到你存放.tar.gz包的文件夹,对每个包执行发布命令:

npm publish <包文件名>.tar.gz --registry=http://<你的TFS服务器地址>:8080/tfs/<项目集合名称>/_packaging/<你的npm源名称>/npm/registry/

如果包的数量很多,写个简单的批量脚本会更高效(以bash为例):

for file in *.tar.gz; do
    npm publish "$file" --registry=http://<你的TFS服务器地址>:8080/tfs/<项目集合名称>/_packaging/<你的npm源名称>/npm/registry/
done

第四步:验证发布并同步给团队

  1. 登录TFS的Web界面,进入包管理模块,查看你发布的包是否已经成功入库。
  2. 告诉团队成员配置他们的npm源:
    • 可以让他们全局配置:npm config set registry <你的TFS源地址>
    • 或者在项目根目录创建.npmrc文件,写入:
      registry=http://<你的TFS服务器地址>:8080/tfs/<项目集合名称>/_packaging/<你的npm源名称>/npm/registry/
      
    这样他们执行npm install时就会从离线的TFS源拉取依赖了。

注意事项

  • 确保所有依赖的包都被提取并发布,不然团队安装主包时会因为缺少依赖失败。
  • 如果遇到带scope的包(比如@xxx/xxx),发布命令完全通用,不需要额外修改。

内容的提问来源于stack exchange,提问作者Mark De Verno

火山引擎 最新活动