UNPKG

vant-reduce

Version:

86 lines (77 loc) 2.41 kB
const fs = require('fs') const path = require('path') console.log(process.cwd()) console.log("process.cwd()") let allVantFiles = fs.readdirSync(path.join(process.cwd(), 'static', 'vant')) let PathArr = new Set(['/vant/common/', '/vant/wxs/', '/vant/mixins/']) let PromiseArray = [] let wxJson = { wxJson: [] } function getJson(ens) { let reg = /\/main\.(j|t)s/ for (let [key, path] of ObjectYeild(ens)) { if (key !== 'app') { PromiseArray.push(getPromise(path.replace(reg, '/main.json'))) } } return PromiseArray } function getPromise(path, isT) { let reg = isT ? /\.\.(\/.*)index$/ : /.*static(\/vant\/.*\/).*/ let str = isT ? '/' : '' return new Promise((resolve, reject) => { fs.readFile(path, (err, data) => { if (err) { return resolve('cuowu') } data = JSON.parse(data.toString()) if (data && data.usingComponents && Object.keys(data.usingComponents).length) { for (let [key, url] of ObjectYeild(data.usingComponents)) { !isT && reg.exec(url) && PathArr.add(`${reg.exec(url)[1].trim()}`) isT && reg.exec(url) && PathArr.add(`/vant${reg.exec(url)[1].trim()}`) } } resolve() }) }) } function* ObjectYeild(obj) { for (let key of Object.keys(obj)) { yield [key, obj[key]] } } function fnSelf(arr, recordArr) { let Promise_arr = [] for (let value of arr) { Promise_arr.push(getPromise(path.join(process.cwd(), 'static', `${value}/index.json`), true)) } Promise.all(Promise_arr).then(() => { let resArr = recordArr[recordArr.length - 1] if (resArr.length === PathArr.size) return getDirRes(PathArr) let resSet = new Set([...PathArr].filter(val => { return !resArr.includes(val) })) Object.assign(recordArr, { [recordArr.length]: [...PathArr] }) fnSelf([...resSet], recordArr) }) } function getDirRes(needFileArray) { wxJson.wxJson = new Set(allVantFiles.filter(x => !needFileArray.has(`/vant/${x}/`))) wxJson.wxJson = [...wxJson.wxJson].map(val => path.join(process.cwd(), 'dist/wx/static/vant', val)) return wxJson } function vantStartCheck(entry) { Promise.all(getJson(entry)).then((res) => { let recordArr = [] Object.assign(recordArr, { [recordArr.length]: [...PathArr] }) fnSelf([...PathArr], recordArr) }).catch((res) => { }) return wxJson } module.exports = { vantStartCheck }