Skip to content

[BUG] npm publish uses different registry then npm unpublish #559

Closed
@mbazalik

Description

@mbazalik

What / Why

This seems to be a duplicate of npm/npm#3032 even though the last comment claims the problem is resolved

In short, when the package contains both .npmrc and publishConfig setup it seems that npm publish is respecting setup from publishConfig while npm unpublish is using .npmrc

When

The project is using both .npmrc to define which registry to use to pull packages from and publishConfig to define to which registry the package should be pushed to

Example:
.npmrc

@dazn:registry=https://example.com/

package.json

{
...
  "name": "@dazn/daznid",
  "version": "2.0.1-rc00002",
  "publishConfig": {
    "@dazn:registry": "https://registry.npmjs.org/",
    "access": "restricted"
  },
...
}

npm publish --loglevel verbose output:

npm publish --loglevel verbose
npm info it worked if it ends with ok
npm verb cli [ '/usr/local/bin/node',
npm verb cli   '/usr/local/bin/npm',
npm verb cli   'publish',
npm verb cli   '--loglevel',
npm verb cli   'verbose' ]
npm info using npm@6.11.3
npm info using node@v10.17.0
npm verb npm-session 7920cfe554e24b7a
npm verb publish [ '.' ]
npm info lifecycle @dazn/daznid@2.0.1-rc00002~prepublish: @dazn/daznid@2.0.1-rc00002
npm info lifecycle @dazn/daznid@2.0.1-rc00002~prepare: @dazn/daznid@2.0.1-rc00002
npm info lifecycle @dazn/daznid@2.0.1-rc00002~prepublishOnly: @dazn/daznid@2.0.1-rc00002
npm WARN lifecycle @dazn/daznid@2.0.1-rc00002~prepublishOnly: cannot run in wd @dazn/daznid@2.0.1-rc00002 npm run build:prod (wd=.)
npm info lifecycle @dazn/daznid@2.0.1-rc00002~prepack: @dazn/daznid@2.0.1-rc00002
npm info lifecycle @dazn/daznid@2.0.1-rc00002~postpack: @dazn/daznid@2.0.1-rc00002
npm notice 
npm notice package: @dazn/daznid@2.0.1-rc00002
npm notice === Tarball Contents === 
npm notice 314B   dist/index.html
npm notice 21.8kB dist/daznid.js 
npm notice 1.3kB  package.json   
npm notice 1.3kB  README.md      
npm notice 117B   CHANGELOG.yml  
npm notice === Tarball Details === 
npm notice name:          @dazn/daznid                            
npm notice version:       2.0.1-rc00002                           
npm notice package size:  9.4 kB                                  
npm notice unpacked size: 24.8 kB                                 
npm notice shasum:        94bbabe79081807a6d768a9eb5debf282a969c00
npm notice integrity:     sha512-6GW6ARu37UeAm[...]gSjZ6cxVvXkRw==
npm notice total files:   5                                       
npm notice 
npm http fetch PUT 200 https://registry.npmjs.org/@dazn%2fdaznid 3769ms
npm info lifecycle @dazn/daznid@2.0.1-rc00002~publish: @dazn/daznid@2.0.1-rc00002
npm WARN lifecycle @dazn/daznid@2.0.1-rc00002~publish: cannot run in wd @dazn/daznid@2.0.1-rc00002 npm run publish:ftp & git push --tags (wd=.)
npm info lifecycle @dazn/daznid@2.0.1-rc00002~postpublish: @dazn/daznid@2.0.1-rc00002
+ @dazn/daznid@2.0.1-rc00002
npm verb exit [ 0, true ]
npm timing npm Completed in 4073ms
npm info ok 

npm unpublish -f --loglevel verbose @dazn/daznid@2.0.1-rc00002

npm info it worked if it ends with ok
npm verb cli [ '/usr/local/bin/node',
npm verb cli   '/usr/local/bin/npm',
npm verb cli   'unpublish',
npm verb cli   '-f',
npm verb cli   '--loglevel',
npm verb cli   'verbose',
npm verb cli   '@dazn/daznid@2.0.1-rc00002' ]
npm info using npm@6.11.3
npm info using node@v10.17.0
npm WARN using --force I sure hope you know what you are doing.
npm verb npm-session 9f0285a83a8cd55c
npm http fetch GET 401 https://example.com/@dazn%2fdaznid?write=true 105ms
npm verb stack Error: Unable to authenticate, need: Basic realm="Artifactory Realm"
npm verb stack     at res.buffer.catch.then.body (/usr/local/lib/node_modules/npm/node_modules/npm-registry-fetch/check-response.js:94:17)
npm verb stack     at process._tickCallback (internal/process/next_tick.js:68:7)
npm verb statusCode 401
npm verb pkgid @dazn/daznid@2.0.1-rc00002
npm verb cwd /drone/src/github.com/getndazn/com-daznid
npm verb Linux 4.14.128-87.105.amzn1.x86_64
npm verb argv "/usr/local/bin/node" "/usr/local/bin/npm" "unpublish" "-f" "--loglevel" "verbose" "@dazn/daznid@2.0.1-rc00002"
npm verb node v10.17.0
npm verb npm  v6.11.3
npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="Artifactory Realm"
npm verb exit [ 1, true ]
npm timing npm Completed in 328ms

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-12-05T15_17_19_217Z-debug.log

Where

  • npm enterprise

Current Behavior

npm publish uses registry defined in publishConfig
NOTICE npm http fetch PUT 200 https://registry.npmjs.org/@dazn%2fdaznid 3769ms in above example

npm unpublish uses registry defined in .npmrc
NOTICE npm http fetch GET 401 https://example.com/`@dazn%2fdaznid?write=true 105ms

Steps to Reproduce

See above

Expected Behavior

npm publish and npm unpublish to use same setup (preferably one which allow to have different registry for pull and push)

Who

  • n/a

References

Related to npm/npm#3032

Metadata

Metadata

Assignees

No one assigned

    Labels

    Bugthing that needs fixing

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions