cli icon indicating copy to clipboard operation
cli copied to clipboard

[BUG] Regression: custom scripts not executed on dependencies from custom registry

Open Cactusbone opened this issue 2 years ago • 5 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

This issue exists in the latest npm version

  • [X] I am using the latest npm

Current Behavior

Using npm i --foreground-scripts (or npm ci --foreground-scripts after the first install), no logs from install script are emitted for a package with a custom registry.

It does work when packages are on the main npm registry.

I've created a package to reproduce this: https://gitlab.com/Cactusbone/test-npm-scripts and I'm using @nexhome/yorkie to check normal behaviour (main registry)

Increasing verbosity in npm logs did not show anything, there's only one line with my package npm timing reifyNode:node_modules/@cactusbone/test-npm-scripts Completed in 75ms

The expected line npm info run @cactusbone/[email protected] install is never produced.

Expected Behavior

Scripts from packages on a custom registry should be executed.

This is working on npm 6, but not on npm 7 and npm 8

Steps To Reproduce

  1. To demonstrate we'll be using https://gitlab.com/Cactusbone/test-npm-scripts package.
  2. With a package.json containing
"dependencies": {
    "@cactusbone/test-npm-scripts": "^1.0.0"
},
  1. and a .npmrc file with @cactusbone:registry=https://gitlab.com/api/v4/packages/npm/
  2. run npm i --foreground-scripts
  3. no logs are produced.

To ensure this is okay from npm registry, I also added "@nexhome/yorkie": "^2.0.8", as a dependency, and this package does produce logs upon installation.

Environment

  • npm: 8.8.0
  • Node.js: 16.15.0
  • OS Name: Windows 11 Professionnel 21H2 22000.613
  • System Model Name: custom desktop
  • npm config:
; prefix = "C:\\Program Files (x86)\\Nodist\\bin" ; overridden by env

; "project" config from C:\Prod\test-npm-script-app\.npmrc

@cactusbone:registry = "https://gitlab.com/api/v4/packages/npm/"

; "env" config from environment

prefix = "C:\\Program Files (x86)\\Nodist\\bin"

; node bin location = C:\Program Files (x86)\Nodist\v-x64\16.15.0\node.exe
; node version = v16.15.0
; npm local prefix = C:\Prod\test-npm-script-app
; npm version = 8.8.0
; cwd = C:\Prod\test-npm-script-app
; HOME = C:\Users\cka
; Run `npm config ls -l` to show all defaults.

I've also tried it under WSL (ubuntu 20.04 on windows, with nvm, node v16.15.0 and npm v8.5.5), and results are the same

Work arounds:

  • use npm 6 or earlier
  • use git link instead of registry

It is also possible to trigger the scripts by using npm explore @cactusbone/test-npm-scripts -- npm install

Cactusbone avatar Apr 28 '22 09:04 Cactusbone