===== Setup npmrc for azure artifacts in WSL 2 ===== I recently got a windows machine from work, since more comfortable with mac or linux, so I installed [[:windows:wsl|WSL 2 (ubuntu)]] to setup nodejs development environment in it, I followed the [[https://docs.microsoft.com/en-us/azure/devops/artifacts/npm/npmrc?view=azure-devops&tabs=windows#set-up-authentication-on-your-dev-box|guide]], and created the auth token from azure personal access token: echo -n [personal-access-token] | base64 then added following to ''.npmrc'': ; begin auth token //pkgs.dev.azure.com//_packaging//npm/registry/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING] //pkgs.dev.azure.com//_packaging//npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] //pkgs.dev.azure.com//_packaging//npm/registry/:email=npm requires email to be set but doesn't use the value //pkgs.dev.azure.com//_packaging//npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING] //pkgs.dev.azure.com//_packaging//npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] //pkgs.dev.azure.com//_packaging//npm/:email=npm requires email to be set but doesn't use the value ; end auth token but this only leads to an error: npm ERR! code E401 npm ERR! Unable to authenticate, need: Bearer authorization_uri=https://login.windows.net/a1b03033-8a3d-4443-a90b-0f3298ffbf90, Basic realm="https://pkgsprodeau1.pkgs.visualstudio.com/", TFS-Federated npm ERR! A complete log of this run can be found in: npm ERR! /home/dcai/.npm/_logs/2021-02-04T22_20_51_870Z-debug.log Same npmrc file works on macbook just not wsl2, coworker who directly work on windows told me they use [[https://www.npmjs.com/package/vsts-npm-auth|Azure DevOps (formerly VSTS) Auth helper]] for authentication on windows 10, so I installed the auth helper on windows directly, ran it by providing azure artifacts registry url, it then generated a .npmrc file under ''c:\Users\[username]\.npmrc'', I copied this file to wsl2, and it worked! The generated npmrc file looks like this: //pkgs.dev.azure.com/[org]/_packaging/[feed]/npm/registry/:username=VssSessionToken ; This is an unencrypted authentication token. Treat it like a password. DO NOT share this value with anyone, including Microsoft support. //pkgs.dev.azure.com/[org]/_packaging/[feed]/npm/registry/:_password=[generated-token] ; The npm client won't use username and _password without an email set, but the service doesn't use the email value. The following is an arbitrarily made-up address. //pkgs.dev.azure.com/[org]/_packaging/[feed]/npm/registry/:email=not-used@example.com //[org].pkgs.visualstudio.com/_packaging/[feed]/npm/registry/:username=VssSessionToken ; This is an unencrypted authentication token. Treat it like a password. DO NOT share this value with anyone, including Microsoft support. //[org].pkgs.visualstudio.com/_packaging/[feed]/npm/registry/:_password=[generated-token] ; The npm client won't use username and _password without an email set, but the service doesn't use the email value. The following is an arbitrarily made-up address. //[org].pkgs.visualstudio.com/_packaging/[feed]/npm/registry/:email=not-used@example.com So happy I don't have to use powershell and bulky IDE. ~~DISCUSSION~~