Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Pipeline ignoring .npmrc

Jorge Vázquez
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
May 4, 2022

Hi!

I'm having a problem that is getting me crazy. I have a node project that use pnpm. Inside, near the package.json and at the root level there's a .npmrc file with a private registry defined. Well... running "pnpm install" the .npmrc file is ignored. I have to include a config set into the pipeline script to make everything work. Why the .npmrc file is ignored? Any clue on this?

This is the pipeline: 

image: node:16.15

clone:
depth: full

definitions:
caches:
pnpm: $BITBUCKET_CLONE_DIR/.pnpm-store

pipelines:
pull-requests:
'**':
- step:
name: Build, test and SonarClound Analysis
caches:
- pnpm

script
:
- curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@7
- pnpm install
- pnpm run build:main
- pnpm run test:main

 

1 answer

0 votes
Patrik S
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
May 5, 2022

Hello @Jorge Vázquez ,

Welcome to Atlassian Community!

From the behaviour you reported, it seems more to be an issue with the framework you are currently using (npm) and it's own configuration, rather than with Pipelines itself, as we are just providing the container environment for your build scripts commands to be executed. That said, if you clone the repository and run the build in your local machine for the same commit, you will likely reproduce the same behavior.

With that in mind, I would have the following suggestions:

  • Add the below command before executing pnpm install in order to list the files in the build directory and check if the .npmrc is indeed there :
    ls -la
  • Checking if the .npmrc is using the correct syntax to define a custom registry, as per pnpm official documentation :
    https://pnpm.io/npmrc#registry
  • Check if the packages you are downloading have a scope configured, because as per nodejs's registry documentation  :
    The registry URL used is determined by the scope of the package (see scope). If no scope is specified, the default registry is used, which is supplied by the registry config parameter

Hope that helps! Let me know if you have any question.

Thank you, @Jorge Vázquez !

Kind regards,

Patrik S

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events