xdc-npm
Version:
xnpm 命令行客户端
49 lines (42 loc) • 1.55 kB
JavaScript
const childProcess = require('child_process');
const pkg = require('./package.json');
const semver = require('semver');
const fs = require('fs');
const config = require('./config');
const moment = require('moment');
require('colors');
const parseArgv = require('./parse_argv');
const todayStr = moment().format('YYYY-MM-DD');
// START 检查是否需要检查更新
let customContent;
try {
customContent = fs.readFileSync(config.tnpmcustomconfig, 'utf-8');
customContent = JSON.parse(customContent);
if (customContent.updateDate == todayStr && customContent.needUpdate == false) {
return;
}
} catch (e) {
// 文件不存在
}
customContent = customContent || {};
// END 检查是否需要检查更新
const program = parseArgv();
const args = [];
if (program.proxy) {
args.push(`--proxy=${program.proxy}`);
}
if (program.registry) {
args.push(`--registry=${program.registry}`);
}
const result = childProcess.execSync(`xnpm info xdc-npm version ${args.join(' ')}`);
const currentVersion = pkg.version;
const latestVersion = result.toString().trim();
const needUpdate = semver.neq(latestVersion, currentVersion);
if (needUpdate || process.env.TNPM_DEBUG) {
console.log(`目前最新版本的 xnpm 为:${latestVersion.green}, 你的当前版本为:${currentVersion.red}`);
console.log(`升级命令:\`$ ${'npm install -g xnpm'.green}\``);
}
customContent.updateDate = todayStr;
customContent.needUpdate = needUpdate;
// 写回缓存
fs.writeFileSync(config.tnpmcustomconfig, JSON.stringify(customContent));