UNPKG

@shuyun-ep-team/scripts

Version:

为项目提供相应的脚本,使其减少繁琐的配置。

87 lines 3.51 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const chalk_1 = __importDefault(require("chalk")); const ora_1 = __importDefault(require("ora")); const validate_npm_package_name_1 = __importDefault(require("validate-npm-package-name")); const cross_spawn_1 = require("../../tools/cross-spawn"); exports.NPMRegistry = 'https://registry.npmjs.org/'; function getRegistry() { return __awaiter(this, void 0, void 0, function* () { const spinner = ora_1.default('loading...').start(); const url = yield cross_spawn_1.spawnPromise('npm', ['config', 'get', 'registry']).catch(err => { spinner.fail(); throw new Error(err); }); spinner.succeed(`安装源: ${chalk_1.default.green(url)}`).clear(); return url; }); } exports.getRegistry = getRegistry; function isNpmRegistry() { return __awaiter(this, void 0, void 0, function* () { const url = yield getRegistry(); return url === exports.NPMRegistry; }); } exports.isNpmRegistry = isNpmRegistry; function checkNpmRegistry(registry) { return registry === exports.NPMRegistry; } exports.checkNpmRegistry = checkNpmRegistry; function getUsername() { const { stdout, status } = cross_spawn_1.spawn.sync('npm', ['whoami'], { encoding: 'utf-8' }); if (status === 0) { return stdout.trim(); } return null; } exports.getUsername = getUsername; function npmLogin() { cross_spawn_1.spawn.sync('npm', ['login'], { stdio: 'inherit', encoding: 'utf-8' }); } exports.npmLogin = npmLogin; function getPackageMaintainers(name) { const args = ['view', '.', 'maintainers']; if (name) { const { validForOldPackages } = validate_npm_package_name_1.default(name); if (validForOldPackages) { args.splice(1, 1, name); } else { throw new Error(`npm package name ${chalk_1.default.green(name)} invalid`); } } const { stdout, status } = cross_spawn_1.spawn.sync('npm', args, { encoding: 'utf-8' }); if (status === 0) { const maintainers = JSON.parse(stdout.replace(/'/g, '"')); return maintainers .map(item => { const matcher = item.match(/(.+?)\s<(.+?)>/); if (matcher) { const [, user, email] = matcher; return { user, email }; } return null; }) .filter(Boolean); } return []; } exports.getPackageMaintainers = getPackageMaintainers; function checkPackageName(name) { return validate_npm_package_name_1.default(name); } exports.checkPackageName = checkPackageName; //# sourceMappingURL=npm.js.map