nlts
Version:
CommandLine Tool for Node LTS
52 lines (43 loc) • 1.59 kB
JavaScript
const axios = require('axios');
const path = require('path');
const fs = require('fs');
const compareVersions = require('compare-versions');
const terminalLink = require('terminal-link');
const color = require('cli-color');
/**
* 获取官方所有的lts版本, 并且大于等于指定版本。
*/
const query = async (v, useLocal) => {
// 去官方获取所有的Node版本
// 获取nodejs.org内容太慢了,直接拷贝了一份。
// const result = await axios.get('https://nodejs.org/dist/index.json');
// const baidu = await axios.get('https://www.baidu.com/');
// console.log(baidu.data);
let data;
if (useLocal) {
let dataPath = path.join(__dirname, '../data/index.json');
data = fs.readFileSync(dataPath).toString();
data = JSON.parse(data);
} else {
data = await axios.get('https://nodejs.org/dist/index.json');
data = data.data;
}
// console.log(Object.keys(data),'===')
let cv = v.split('.');
let cvArray = ['0', '0', '0'];
let i = 0;
while (i < cv.length) {
cvArray[i] = cv[i];
i++;
}
return data.filter(node => {
const cp = v ? (compareVersions(node.version, 'v' + cvArray.join('.')) >= 0) : true;
return node.lts && cp;
}).map(it => {
const { files, ...rest } = it;
const link = `https://nodejs.org/dist/${it.version}/docs/api/documentation.html`;
const doc = color.yellow(terminalLink(`API(${link})`, link));
return { ...rest, doc }
})
}
module.exports = query;