Just a heads up: On March 24, 2025, starting at 4:30pm CDT / 21:30 UTC, the site will be undergoing scheduled maintenance for a few hours. During this time, the site might be unavailable for a short while. Thanks for your patience.
×I am using npm-publish pipe in my project's pipeline. The problem is that my project's prepublishOnly script requires Node v14 while the npm-publish pipe uses Node v10 (see https://bitbucket.org/atlassian/npm-publish/src/master/Dockerfile).
Does anyone know how I can use Node v14 in the npm-publish pipeline?
My bitbucket-pipelines.yml:
image: node:14.15.1
pipelines:
tags:
'v*':
- step:
name: Build and Publish
deployment: production
script:
- npm config set unsafe-perm true
- npm install webpack@5.4.0 webpack-cli@4.6.0 -g
- npm install
- pipe: atlassian/npm-publish:0.3.2
variables:
NPM_TOKEN: $NPM_TOKEN
EXTRA_ARGS: "--dry-run --unsafe-perm"
Relevant error in my pipeline log:
Status: Downloaded newer image for bitbucketpipelines/npm-publish:0.3.2
INFO: Starting pipe execution...
INFO: Registry URL: https://registry.npmjs.org
INFO: Setting npm auth configuration...
INFO: Publishing package...
npm publish . --dry-run --unsafe-perm
> chesapeake-progress-charts@1.1.1 prepublishOnly .
> NODE_ENV=production webpack --config=./webpack.module-build.config.js
[webpack-cli] Failed to load '/opt/atlassian/pipelines/agent/build/webpack.module-build.config.js' config
[webpack-cli] Error: Missing binding /opt/atlassian/pipelines/agent/build/node_modules/node-sass/vendor/linux_musl-x64-64/binding.node
Node Sass could not find a binding for your current environment: Linux/musl 64-bit with Node.js 10.x
Found bindings for the following environments:
- Linux 64-bit with Node.js 14.x
This usually happens because your environment has changed since running `npm install`.
package.json
"prepublishOnly": "NODE_ENV=production webpack --config=webpack.module-build.config.js"
The npm publish pipe is basically a thin shell script wrapping the npm publish command.
As you're already building in the pipeline script, why not drop the pipe and run npm publish directly in your already fitting pipeline container?
Just an idea.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.