Search code examples
npmgitlabgitlab-ci

How do I publish a private npm package with gitlab ci?


I want to publish a private npm package with Gitlab CI.

I've created an auth token for my npm user and set it as a variable NPM_TOKEN in my Gitlab CI settings.

The job then creates an .npmrc file with the registry and the auth token.

- npm run build && npm run build:es6
- echo '//registry.npmjs.org/:_authToken=${NPM_TOKEN}'>.npmrc
- npm publish

The job fails with this message:

npm ERR! code ENEEDAUTH
npm ERR! need auth auth required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`

Is it possible to publish with only an auth token?


Solution

  • As @Amityo said, rather than manually editing the npmrc file,

    npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
    

    is the way to go, because otherwise you may be editing the wrong npmrc file.

    If you are still getting an authentication error, and are certain that the token is correct, check your registry URL. You can run

    npm publish --verbose
    

    whose output will includes lines like

    npm verb getPublishConfig { registry: 'https://.......' }
    npm verb mapToRegistry no registry URL found in name for scope @boxine
    npm verb publish registryBase https://.......
    

    If you are publishing to npmjs.org, the URL (....... above) should be https://registry.npmjs.org/ .

    If this registry URL does not fit, look in your npmrc file for a different one. Also make sure you didn't override the registry in your package.json file! You can search for publishConfig in that file.