script/login.js (26 lines of code) (raw):
#!/usr/bin/env node
// eslint-disable-next-line @typescript-eslint/no-var-requires
const fs = require('fs');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const path = require('path');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const readline = require('readline');
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { exec } = require('child_process');
process.cwd(path.join(__dirname, '..'));
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question('Enter the NPM auth token: ', function(token) {
fs.writeFileSync('.npmrc', `//registry.npmjs.org/:_authToken=${token}`);
rl.close();
});
rl.on('close', function() {
exec('npm whoami', (err, stdout, _) => {
if (err) {
console.error(err);
process.exit(1);
} else {
console.log(`Logged in as: ${stdout.trim()}`);
process.exit(0);
}
});
});