import { outputJSON, pathExists } from 'fs-extra'
import { join } from 'path'
-async function installNpmPlugin (name: string, version: string) {
+async function installNpmPlugin (npmName: string, version?: string) {
// Security check
- checkNpmPluginNameOrThrow(name)
- checkPluginVersionOrThrow(version)
+ checkNpmPluginNameOrThrow(npmName)
+ if (version) checkPluginVersionOrThrow(version)
+
+ let toInstall = npmName
+ if (version) toInstall += `@${version}`
+
+ const { stdout } = await execYarn('add ' + toInstall)
- const toInstall = `${name}@${version}`
- await execYarn('add ' + toInstall)
+ logger.debug('Added a yarn package.', { yarnStdout: stdout })
}
async function installNpmPluginFromDisk (path: string) {
await outputJSON(pluginPackageJSON, {})
}
- await execShell(`yarn ${command}`, { cwd: pluginDirectory })
+ return execShell(`yarn ${command}`, { cwd: pluginDirectory })
} catch (result) {
logger.error('Cannot exec yarn.', { command, err: result.err, stderr: result.stderr })