From f6ab32d0293900e80f686f4f7ed5b3a553c69027 Mon Sep 17 00:00:00 2001 From: Rui Lopes Date: Wed, 1 Nov 2017 09:01:46 +0000 Subject: [PATCH] simplify the npm login --- provision/npm-login.js | 23 +++++++++++++++++++++++ provision/use-npm-repository.sh | 16 +++++++--------- 2 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 provision/npm-login.js diff --git a/provision/npm-login.js b/provision/npm-login.js new file mode 100644 index 0000000..8dfb396 --- /dev/null +++ b/provision/npm-login.js @@ -0,0 +1,23 @@ +var RegistryClient = require('npm-registry-client'); + +var client = new RegistryClient({}); + +// see https://github.com/npm/npm-registry-client/blob/v8.5.0/lib/adduser.js +client.adduser( + process.env.NPM_REGISTRY, + { + auth: { + username: process.env.NPM_USER, + password: process.env.NPM_PASS, + email: process.env.NPM_EMAIL, + } + }, + (error, data, raw, response) => { + if (error) { + console.error(error) + process.exit(1) + } + console.log(data.token) + process.exit() + } +); diff --git a/provision/use-npm-repository.sh b/provision/use-npm-repository.sh index 458dbfb..4639785 100644 --- a/provision/use-npm-repository.sh +++ b/provision/use-npm-repository.sh @@ -45,25 +45,23 @@ EOF npm install --save left-pad node hello-world.js - # # publish a package to the npm-hosted repository. -# see https://www.npmjs.com/package/npm-cli-login # login. -npm install npm-cli-login export NPM_USER=alice.doe export NPM_PASS=password export NPM_EMAIL=alice.doe@example.com -# NB npm-cli-login always adds the trailing slash to the registry url, -# BUT npm publish refuses to work without it, so workaround this. -export NPM_REGISTRY=http://localhost:8081/repository/npm-hosted -./node_modules/.bin/npm-cli-login -export NPM_REGISTRY=$NPM_REGISTRY/ +export NPM_REGISTRY=http://localhost:8081/repository/npm-hosted/ +npm install npm-registry-client@8.5.0 +npm_auth_token=$(NODE_PATH=$PWD/node_modules node /vagrant/provision/npm-login.js 2>/dev/null) +npm set //localhost:8081/repository/npm-hosted/:_authToken $npm_auth_token + +# publish. npm publish --registry=$NPM_REGISTRY popd -# publish. +# use the published package. mkdir use-hello-world-npm pushd use-hello-world-npm cat >package.json <<'EOF'