Skip to content
Bun
Bun
Package Manager

Using bun install with an Azure Artifacts npm registry

Azure Artifacts’ instructions for .npmrc say to base64 encode the password. Do not do this in bunfig.toml or NPM_CONFIG_REGISTRY as shown below; Bun base64 encodes the password for you. Bun also reads .npmrc files, and there _password must stay base64 encoded, as in Azure’s instructions.

Azure Artifacts is a package management system for Azure DevOps. You can use it to host your own private npm registry, along with other types of packages.


Configure with bunfig.toml


To use Azure Artifacts with bun install, add a bunfig.toml file to your project with the following contents. Replace my-azure-devops-org with the name of your Azure DevOps organization and my-feed with the name of your feed. If the feed is project-scoped, the URL also includes the project name: https://pkgs.dev.azure.com/my-azure-devops-org/my-project/_packaging/my-feed/npm/registry/. The username can be any non-empty string.

bunfig.toml
[install.registry]
url = "https://pkgs.dev.azure.com/my-azure-devops-org/_packaging/my-feed/npm/registry/"
username = "my-azure-artifacts-user"
# You can use an environment variable here
password = "$NPM_PASSWORD"

Then assign your Azure Personal Access Token to the NPM_PASSWORD environment variable. Bun automatically reads .env files, so create a file called .env in your project root. Don’t base64 encode the token; Bun does that for you.

.env
NPM_PASSWORD=<paste token here>

Configure with environment variables


To configure Azure Artifacts without bunfig.toml, set the NPM_CONFIG_REGISTRY environment variable. Append :username=<USERNAME> and :_password=<PASSWORD> to the URL, as shown below. Replace <USERNAME> and <PASSWORD> with your own values.

terminal
NPM_CONFIG_REGISTRY=https://pkgs.dev.azure.com/my-azure-devops-org/_packaging/my-feed/npm/registry/:username=<USERNAME>:_password=<PASSWORD>

Don’t base64 encode the password


Azure Artifacts’ instructions for .npmrc say to base64 encode the password. Do not do this in bunfig.toml or NPM_CONFIG_REGISTRY; Bun base64 encodes the password for you. Bun also reads .npmrc files, and there _password must stay base64 encoded, as in Azure’s instructions.

Azure DevOps personal access tokens are 84 characters long. A base64-encoded one is 112 characters long and does not end with =.


To decode a base64-encoded password, open your browser console and run:

browser
atob("<base64-encoded password>");

Alternatively, use the base64 command line tool, though the password may end up in your shell history:

terminal
echo "base64-encoded-password" | base64 --decode
Was this page helpful?Suggest editsRaise issue