const _install = async (name, version, opts) => { let t = Date.now() await installer({ registry: opts.registry || 'https://registry.npmjs.org/', root: opts.root, pkgs: [{ name: name, version: version }], }) DEBUG('install using: %ds', (Date.now() - t) / 1000) }
vueDoctor.on(VueDoctorMessageType.install, async (message) => { const { package, cwd } = JSON.parse(message) await new Promise((resolve, reject) => { glob('+(_vue-template-compiler*|vue-template-compiler)', {cwd: path.join(cwd, 'node_modules')}, async (err, files) => { let len = files.length if (len > 0) { for(let i = 0; i < len; i++) { try { await fse.remove(path.join(cwd, 'node_modules', files[i])) } catch (err) { DEBUG('Remove _vue-template-compiler failed: ', err) } } } resolve() }) }) await installPackage(package, { root: cwd, registry: globalConfiguration.registry, ENVS: globalConfiguration.ENVS }) spinner.color = 'green' spinner.text = logger.colors.green(`Fix ${message.package} successed`) })
const checkDependencies = async dir => { let t = Date.now() let pkgData: any try { pkgData = await fs.read(path.join(dir, 'package.json'), 'json') } catch (e) { DEBUG('read package fail: %d', e && e.stack) } const deps = Object.keys(pkgData.dependencies || {}) if (deps.length > 0) { deps.map(dep => { return new Promise(async (resolve, reject) => { try { let p = path.join(dir, 'node_modules', dep) await fs.existsAsync(p) resolve() } catch (e) { reject(e) } }) }) } DEBUG('check using: %ds', (Date.now() - t) / 1000) }
DEBUG(error, homeDotDir)
DEBUG('cli packages need to be uninstalled', locat) this.emit(VueDoctorMessageType.info, `Start fix ${locat}`) let output = await exec('npm uninstall vue', { let vuePackage = await fse.readJson(path.join(locat, 'vue', 'package.json')) let vueTemplateCompilerPackage = await fse.readJson(path.join(locat, 'vue-template-compiler', 'package.json')) DEBUG('mismatch packages:', vueTemplateCompilerPackage, vuePackage) if ( vueTemplateCompilerPackage && DEBUG(`Path ${locat} is ok`) this.emit(VueDoctorMessageType.end, `Path ${locat} is ok`) DEBUG(`Path ${locat} is ok`) this.emit(VueDoctorMessageType.end, `Path ${locat} is ok`)
DEBUG(error, homeDotDir);
DEBUG(`start install package ${name}@${version}`) if (exists && !opts.force) { let err: any = new Error('module is locked') DEBUG('clear, lockfile: %s; succeed: %s; pkgfile: %s', lockFile, succeed, pkgFile) try { DEBUG('clear error', e.message) DEBUG('already cleared') DEBUG(`lock installing progress...`) packageJson = await fs.read(path.join(opts.root, 'node_modules', name, 'package.json'), 'json') } catch (e) { DEBUG('read package json error: %d', e && e.stack) DEBUG('new package json: %o', packageJson) DEBUG('install core done')