@watone/wt-cli
Version:
watone tools
59 lines (51 loc) • 1.67 kB
JavaScript
/*
* @describe: 检测是否需要更新版本
* @Author: superDragon
* @Date: 2019-08-30 14:18:24
* @LastEditors: xkloveme
* @LastEditTime: 2023-01-14 23:16:51
*/
;
const path = require('path');
const fs = require('fs-extra');
const axios = require('axios');
const semver = require('semver');
const log = require('./log');
const locals = require('../../locals')();
let curVersion = process.env.VERSION;
// 获取项目根目录
const getHome = require('./index').getHome;
const TIME_RANGE = 24 * 60 * 60 * 1000;
const NPM_REGISTRY = 'https://registry.npmjs.org/@watone/wt-cli';
function requestPackageInfo () {
axios.get(NPM_REGISTRY)
.then(res => {
// npm 上的版本号
let lastVersion = res.data['dist-tags'].latest;
if (semver.gt(lastVersion, curVersion)) {
log.info(log.chalk.bold.yellow(locals.UPDATE_TIPS));
}
})
.catch(error => {
console.log(error);
});
}
module.exports = async function () {
// 检测更新路径
let updateCheckerInfoPath = path.resolve(getHome(), '.updateChecker.txt');
// true如果路径存在false则返回,否则返回。
if (fs.existsSync(updateCheckerInfoPath)) {
// 读取文件
let updateCheckerInfo = fs.readFileSync(updateCheckerInfoPath, 'utf-8');
if (Date.now() - (+updateCheckerInfo) >= TIME_RANGE) {
await requestPackageInfo();
fs.writeFileSync(updateCheckerInfoPath, Date.now() + '');
}
}
else {
let dirname = path.dirname(updateCheckerInfoPath);
fs.existsSync(dirname) && fs.mkdirpSync(dirname);
fs.writeFileSync(updateCheckerInfoPath, Date.now() + '');
await requestPackageInfo();
}
};