项目背景是需要在用户使用的cli(我们提供的atom-engine toolkit)的命令行中提示用户对应的版本和需要升级的提示。
思路很清楚:run/build 的命令中增加checkVersion的逻辑,然后给出最后相应提示
遇到的问题是如何获取用户当前使用的版本信息,如果用户是在使用init安装的包中运行还可以通过package.json来获取,但是我们的工具是`全局`的,这就只能通过相应的工具库或者shell命令获取了。查了一波资料后,没有合适的工具库,就使用shell来解决吧。
代码如下:
```
const exec = require('child_process').exec;
const semver = require('semver');
const colors = require('colors');
const packageJson = require('../package.json');
// 通过shell命令获取安装的atom-engine 版本
let cmdStr = 'atom-engine -V';
let currentVer = '';
var checkVersion = function () {
let updateVer = packageJson.version;
exec(cmdStr, function (err, stdout) {
if (!err) {
currentVer = stdout;
if (semver.gt(updateVer, currentVer)) {
let warningContent = '检测到您的atom-engine-toolkit版本为' + currentVer + '请更新到最新版' + updateVer;
console.log(colors.red(warningContent));
}
else {
console.log(colors.green('您的atom-engine-toolkit版本' + currentVer + '已经是最新版本, 请继续使用'));
}
}
});
};
```
最终的结果如下:
网友评论