bia
Version:
a tool for download git repository
128 lines (114 loc) • 2.88 kB
JavaScript
/*
* @Author: hzxulin@yeah.net
* @Date: 2018-12-04 16:03:45
* @Last Modified by: hzxulin@yeah.net
* @Last Modified time: 2018-12-12 15:16:57
*/
const path = require('path')
const table = require('console.table')
const fse = require('fs-extra')
const execa = require('execa')
const NPM_CONFIG = require('../../config/npm.json')
/**
* 获取当前npm的配置源
*/
const getCurrentRegistry = () => {
return new Promise((resolve, reject) => {
let cmd = 'npm config get registry'
execa.shell(cmd).then((res) => {
resolve(res.stdout)
}).catch(err => {
reject(err)
})
})
}
/**
* 格式化数组,使用table显示
*/
const showNpmList = (_list) => {
return new Promise((resolve, reject) => {
try {
let tab = table.getTable(_list)
console.log('\n')
console.log(tab)
resolve()
} catch (err) {
reject(err)
}
})
}
/**
* 移动文件
* @param {string} ori 源文件
* @param {string} dist 目标文件
*/
const moveFileToDist = (ori, dist) => {
return new Promise((resolve, reject) => {
try {
fse.copySync(ori, dist)
resolve(ori, dist)
} catch (err) {
reject(err)
}
})
}
/**
* 更新配置文件
* @param {object} res 配置文件信息
*/
const updateConfig = (res) => {
return new Promise((resolve, reject) => {
let dist = path.resolve(__dirname, '../../config/npm.json')
let content = JSON.stringify(res, null, 4)
fse.outputFile(dist, content, err => {
if (err) {
reject(err)
} else {
resolve(res)
}
})
})
}
/**
* 获取配置文件的配置信息列表
*/
const getConfigList = () => {
return new Promise((resolve, reject) => {
if (NPM_CONFIG.list && NPM_CONFIG.list.length) {
let list = []
NPM_CONFIG.list.forEach((_v, _i) => {
list.push({
name: `${_v.name} ${_v.registry}`,
value: _i,
})
})
resolve(list)
} else {
reject('== 未配置任何的npm列表,请先配置 ==')
}
})
}
/**
* 设置npm的源
* @param {string} registry 使用的npm目标源
*/
const useNpmConfig = (registry) => {
return new Promise((resolve, reject) => {
let cmd = `npm config set registry ${registry}`
execa.shell(cmd).then(() => {
return getCurrentRegistry()
}).then(res => {
resolve(res)
}).catch(err => {
reject(err)
})
})
}
module.exports = {
getCurrentRegistry,
showNpmList,
moveFileToDist,
updateConfig,
getConfigList,
useNpmConfig,
}