npm publish to nexus

Renaud is Not Bill Gates picture Renaud is Not Bill Gates · Oct 27, 2017 · Viewed 8.7k times · Source

I'm trying to publish an npm package to our nexus private registry using this command :

npm publish --registry http://localhost:8081/nexus/content/repositories/npmjs

but I get this error :

npm ERR! path C:\Users\USER~1.MAJ\AppData\Local\Temp\npm-13292-e2329f38\tmp\fromDir-e7e42b8d\package.tgz
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall unlink
npm ERR! Error: EPERM: operation not permitted, unlink 'C:\Users\USER~1.MAJ\AppData\Local\Temp\npm-13292-e2329f38\tmp\fromDir-e7e42b8d\package.tgz'
...
npm ERR! Please try running this command again as root/Administrator.

and this is my npm configuration (.npmrc) :

 registry: 'http://localhost:8081/nexus/content/repositories/npmjs/',
  _auth: 'YWRtaW46YWRtaW4xMjM=',
  'always-auth': true 

How can I solve this ?

Edit :

npm -v: 5.3.0

node -v: v8.8.0

npm config get registry: http://localhost:8081/nexus/content/repositories/npmjs

Answer

Renaud is Not Bill Gates picture Renaud is Not Bill Gates · Oct 31, 2017

Thanks to @DarthHater I figured out the solution, so what I was trying to do is publishing to the proxy repository, which was pointing to the official npm registry, instead of doing that I have to create a private (hosted) repository for my own packages, and then use a group repository to provide all the repos under a single URL, by doing that I had to set the group repository as the default repository (in .npmrc) and the private repository as the publish repository (in package.json), and don't forget to assign an email in the .npmrc (any email) so when publishing it will use settings in the local .npmrc (authentification ...) and not the settings in the home .npmrc.