@shuyun-ep-team/scripts
Version:
为项目提供相应的脚本,使其减少繁琐的配置。
87 lines • 3.51 kB
JavaScript
;
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