const { copyDir, fileForEach, readFile, writeFile, unlinkDirFileByExtname, dirForEach } = require('@jiaminghi/fs') const print = require('./plugin/print') const path = require('path') const exec = require('./plugin/exec') const PACKAGE_SRC = './src' const COMPILE_SRC = './lib' const COMPONENTS_DIR = '/components' const ENTRANCE = '/index.js' const libName = 'datav' async function start () { // Compile for NPM const copyPackage = await copyDir(PACKAGE_SRC, COMPILE_SRC) if (!copyPackage) { print.error('Exception in file copy!') return false } print.success('Complete file copy!') const abstract = await abstractLessFromVue() if (!abstract) { print.error('Exception in less file extraction!') return false } print.success('Complete less file extraction!') await compileLessToCss() print.success('Complete less compilation to css!') const unlink = await unlinkDirFileByExtname(COMPILE_SRC, ['.less']) if (!unlink) { print.error('Exception in less file deletion!') return false } print.success('Complete less file deletion!') const addImport = await addCssImport() if (!addImport) { print.error('Exception in adding css import statement!') return false } print.success('Finish adding css import statement!') const componentsExport = await addComponentsExport() if (!componentsExport) { print.error('Exception in adding components export statement!') return false } print.success('Finish adding components export statement!') // Compile for UMD version const rollupCompile = await exec(`rollup -c build/rollup.config.js`) if (!rollupCompile) { print.error('Exception in rollupCompile') return } print.tip('After rollupCompile') const terser = await exec(`rollup -c build/rollup.terser.config.js`) if (!terser) { print.error('Exception in terser') return } print.tip('After terser') print.yellow('-------------------------------------') print.success(' DataV Lib Compile Success! ') print.yellow('-------------------------------------') return true } async function abstractLessFromVue () { let abstractSuccess = true await fileForEach(COMPILE_SRC, async src => { if (path.extname(src) !== '.vue') return let template = await readFile(src) let style = template.match(/