Created
April 9, 2022 12:38
-
-
Save mdailey77/adaf4c7acf24836a9f2c3a3346a9a4da to your computer and use it in GitHub Desktop.
Remove all stored npm packages from Azure Artifacts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# Azure DevOps REST API #> | |
$url1 = 'https://feeds.dev.azure.com/{organization}/_apis/packaging/Feeds/{feed_id}/packages?protocolType=npm&includeAllVersions=true&api-version=7.1-preview.1' | |
$Token = '{Personal_Access_Token}' | |
if ($Token -eq "") { | |
Write-Host 'PAT not set' | |
exit 1 | |
} | |
$AzureAuthHeader1 = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "", $Token))) | |
$headers1 = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" | |
$headers1.Add("Authorization", ("Basic {0}" -f $AzureAuthHeader1)) | |
$headers1.Add("Content-Type", "application/json") | |
$response1 = Invoke-RestMethod -Uri $url1 -Method GET -Headers $headers1 | |
$packages = $response1.value | |
<# Loops through returned npm package versions and deletes them #> | |
Foreach ($i in $packages) | |
{ | |
$packageName = $i.name | |
Write-Host $i.name -BackgroundColor cyan | |
$allversions = $i.versions | |
Foreach ($v in $allversions) { | |
$packageVersion = $v.version | |
$url2 = 'https://pkgs.dev.azure.com/{organization}/_apis/packaging/feeds/{feed_id}/npm/{0}/versions/{1}?api-version=7.1-preview.1' -f $packageName, $packageVersion | |
$AzureAuthHeader2 = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "", $Token))) | |
$headers2 = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" | |
$headers2.Add("Authorization", ("Basic {0}" -f $AzureAuthHeader2)) | |
$headers2.Add("Content-Type", "application/json") | |
$response2 = Invoke-RestMethod -Uri $url2 -Method DELETE -Headers $headers2 | |
Write-Host 'deleted' + $response2.value | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
If there are a large number of npm packages, this script will have to be run multiple times given there is a limit on the number of npm package versions retrieved at one time.