无npm在线环境生成Angular CLI离线安装tgz包的方案求助
生成包含完整依赖的Angular CLI离线安装包(Windows原生工具实现)
前提条件
- 有网Windows电脑:自带PowerShell、
curl(Windows 10+默认预装,Win7可改用PowerShell的Invoke-WebRequest) - 离线Windows电脑:已安装符合Angular CLI版本要求的Node.js和npm(提前确认对应CLI版本的Node.js兼容范围)
步骤1:在有网电脑上获取所有依赖的tgz包
1.1 获取Angular CLI最新稳定版元数据
打开PowerShell,执行以下命令:
# 下载Angular CLI最新版的npm元数据文件 Invoke-WebRequest -Uri "https://registry.npmjs.org/@angular/cli/latest" -OutFile "cli-latest.json" # 解析元数据,提取版本号和依赖列表 $cliData = Get-Content "cli-latest.json" | ConvertFrom-Json $cliVersion = $cliData.version $allDeps = $cliData.dependencies + $cliData.peerDependencies | Where-Object { $_ -ne $null } # 创建存放安装包的目录 New-Item -ItemType Directory -Path "angular-cli-packages" -Force Set-Location "angular-cli-packages"
1.2 递归下载所有依赖的tgz文件
在同一PowerShell窗口中,运行以下原生脚本(无需额外工具):
function Download-NpmPackage { param( [string]$PackageName, [string]$Version ) # 处理@开头的包名格式(如@angular/cli) $url = "https://registry.npmjs.org/$PackageName/-/$PackageName-$Version.tgz" # 跳过已下载的包 if (-not (Test-Path "$PackageName-$Version.tgz")) { Write-Host "Downloading $PackageName@$Version..." try { Invoke-WebRequest -Uri $url -OutFile "$PackageName-$Version.tgz" -ErrorAction Stop } catch { Write-Warning "Failed to download $PackageName@$Version : $_" return } } # 递归下载当前包的依赖 $metaUrl = "https://registry.npmjs.org/$PackageName/$Version" $metaPath = "$PackageName-$Version.json" Invoke-WebRequest -Uri $metaUrl -OutFile $metaPath -ErrorAction SilentlyContinue if (Test-Path $metaPath) { $metaData = Get-Content $metaPath | ConvertFrom-Json $deps = $metaData.dependencies | Where-Object { $_ -ne $null } foreach ($dep in $deps.GetEnumerator()) { Download-NpmPackage -PackageName $dep.Key -Version $dep.Value } Remove-Item $metaPath -Force } } # 先下载Angular CLI主包 Download-NpmPackage -PackageName "@angular/cli" -Version $cliVersion # 下载所有顶层依赖 foreach ($dep in $allDeps.GetEnumerator()) { Download-NpmPackage -PackageName $dep.Key -Version $dep.Value }
1.3 整理文件
脚本执行完成后,angular-cli-packages目录会包含Angular CLI主包及其所有递归依赖的tgz文件,删除临时的cli-latest.json即可。
步骤2:在离线电脑上安装Angular CLI
- 将
angular-cli-packages文件夹复制到离线电脑的任意路径(如C:\angular-cli-offline) - 打开命令提示符(CMD)或PowerShell,进入该目录:
cd C:\angular-cli-offline - 将所有tgz包添加到npm本地缓存:
for %f in (*.tgz) do npm cache add "%f" - 全局安装Angular CLI(替换
x.x.x为实际下载的CLI版本号):npm install -g @angular/cli-x.x.x.tgz --offline - 验证安装:
ng version
注意事项
- 若离线电脑Node.js版本不符合要求,需提前在有网环境下载对应Node.js离线安装包,复制到离线电脑安装。
- 脚本会跳过已下载的包,中途中断可重新运行,无需重复下载。
- 若部分包下载失败,可单独执行对应包的下载命令重试。
内容的提问来源于stack exchange,提问作者James Jackson
相关产品推荐
相关产品推荐

