UNPKG

@cisdi/pangu

Version:

develop tool for ui-engine project

77 lines (65 loc) 2.02 kB
const pkg = require('./pkg') const { isReact, isVue, isVue2 } = require('./framework') const reactDeps = require('../deps/react') const vueDeps = require('../deps/vue') const vue2Deps = require('../deps/vue2') const { spawnSync } = require('child_process') const signale = require('signale') const { dependencies = {}, devDependencies = {} } = pkg const isExistDeps = (localDeps, requireDeps) => { const depsArr = Object.keys(requireDeps) if (!depsArr.length) { return true } const fullInstalled = Object.keys(requireDeps).every((dep) => localDeps[dep]) return fullInstalled } const installDeps = (deps, dev) => { const depsArr = Object.keys(deps).map((dep) => { const version = deps[dep] return [dep, version].join('@') }) if (depsArr.length) { if (depsArr.length) { const isWin32 = process.platform === 'win32' const cmd = isWin32 ? 'npm.cmd' : 'npm' const save = dev ? '--save-dev' : '--save' const subProcess = spawnSync(cmd, ['install', save, ...depsArr], { stdio: 'ignore', encoding: 'utf-8', }) if (subProcess.status === 1) { signale.error('Required dependencies install failed') signale.info(depsArr.join(' ')) process.exit(0) } } } } const checkDeps = () => { signale.await('Check required deps') let deps if (isReact) { deps = reactDeps } else if (isVue) { deps = vueDeps } else if (isVue2) { deps = vue2Deps } if (deps) { const depsFullInstalled = isExistDeps(dependencies, deps.deps) const devDepsFullInstalled = isExistDeps(devDependencies, deps.devDeps) if (!devDepsFullInstalled) { signale.await('Install development dependencies') installDeps(deps.devDeps, true) } if (!depsFullInstalled) { signale.await('Install dependencies') installDeps(deps.deps, false) } if (!depsFullInstalled || !devDependencies) { signale.success('Dependencies install finish') } } } module.exports = checkDeps