@fuse-oo/cli
Version:
fuse内部脚手架工具
85 lines (70 loc) • 2.24 kB
JavaScript
// 写入文件,安装依赖
const fs = require('fs-extra')
const chalk = require('chalk')
const path = require('path')
const {
log,
error,
logWithSpinner,
stopSpinner,
} = require('./common')
const libPath = path.resolve(__dirname, '../../temp/libs/')
const libs = ['jquery', 'zepto', 'underscore', 'loadash', 'flexable']
const libMap = {}
libs.forEach(lib => {
libMap[lib] = path.resolve(libPath, `./${lib}.js`)
})
const uiPath = path.resolve(__dirname, '../../temp/ui/')
const uis = ['amazeui', 'mdui', 'mzui', 'zui']
const uiMap = {}
uis.forEach(ui => {
uiMap[ui] = {
css: path.resolve(uiPath, `./${ui}/${ui}.min.css`),
js: path.resolve(uiPath, `./${ui}/${ui}.min.js`)
}
})
// 依赖jq的ui库
const relyOnJqueryUI = ['zui', 'mzui']
const promises = []
// 添加第三方工具库
async function generateLib(context, lib) {
const _context = `${context}/js`
const libTemp = await fs.readFile(libMap[lib])
await fs.writeFile(path.resolve(_context, `./${lib}.js`), libTemp, {flag: 'w'})
}
// 添加ui库
async function generateUI(context, ui) {
const uiCssTemp = await fs.readFile(uiMap[ui].css)
const uiJsTemp = await fs.readFile(uiMap[ui].js)
await fs.writeFile(path.resolve(`${context}/css`, `./${ui}.min.css`), uiCssTemp, {flag: 'w'})
await fs.writeFile(path.resolve(`${context}/js`, `./${ui}.min.js`), uiJsTemp, {flag: 'w'})
}
module.exports = async (context, cliOptions) => {
logWithSpinner(`${chalk.cyan('[2/3]')} 🚚 添加${chalk.yellow('第三方库')}`)
if (cliOptions.ui) {
if (relyOnJqueryUI.includes(cliOptions.ui)) {
const jq = 'jquery'
if (!cliOptions.libs) {
cliOptions.libs = [ jq ]
} else if (!cliOptions.libs.includes(jq)) {
cliOptions.libs.push(jq)
}
}
const promise = await generateUI(context, cliOptions.ui)
promises.push(promise)
}
if (cliOptions.libs) {
cliOptions.libs.forEach(async (lib) => {
const promise = await generateLib(context, lib)
promises.push(promise)
})
}
if (cliOptions.hasRem) {
const promise = await generateLib(context, 'flexable')
promises.push(promise)
}
Promise.all(promises).catch(err => {
stopSpinner(false)
error(err)
})
}