Merge branch 'dev' of github.com:vuejs/vue-cli into feat-ui

This commit is contained in:
Guillaume Chau
2018-03-25 14:40:47 +02:00
3 changed files with 26 additions and 14 deletions

View File

@@ -2,6 +2,7 @@ const chalk = require('chalk')
const invoke = require('./invoke')
const { loadOptions } = require('./options')
const { installPackage } = require('./util/installDeps')
const { resolveModule } = require('./util/module')
const {
log,
error,
@@ -26,7 +27,12 @@ async function add (pluginName, options = {}, context = process.cwd()) {
log(`${chalk.green('✔')} Successfully installed plugin: ${chalk.cyan(packageName)}`)
log()
invoke(pluginName, options, context)
const generatorPath = resolveModule(`${packageName}/generator`, context)
if (generatorPath) {
invoke(pluginName, options, context)
} else {
log(`Plugin ${packageName} does not have a generator to invoke`)
}
}
module.exports = (...args) => {

View File

@@ -3,11 +3,11 @@ const path = require('path')
const execa = require('execa')
const chalk = require('chalk')
const globby = require('globby')
const resolve = require('resolve')
const inquirer = require('inquirer')
const Generator = require('./Generator')
const { loadOptions } = require('./options')
const { installDeps } = require('./util/installDeps')
const { loadModule } = require('./util/module')
const {
log,
error,
@@ -18,16 +18,6 @@ const {
resolvePluginId
} = require('@vue/cli-shared-utils')
function load (request, context) {
let resolvedPath
try {
resolvedPath = resolve.sync(request, { basedir: context })
} catch (e) {}
if (resolvedPath) {
return require(resolvedPath)
}
}
async function readFiles (context) {
const files = await globby(['**'], {
cwd: context,
@@ -75,7 +65,7 @@ async function invoke (pluginName, options = {}, context = process.cwd()) {
)
}
const pluginGenerator = load(`${id}/generator`, context)
const pluginGenerator = loadModule(`${id}/generator`, context)
if (!pluginGenerator) {
throw new Error(`Plugin ${id} does not have a generator.`)
}
@@ -83,7 +73,7 @@ async function invoke (pluginName, options = {}, context = process.cwd()) {
// resolve options if no command line options are passed, and the plugin
// contains a prompt module.
if (!Object.keys(options).length) {
const pluginPrompts = load(`${id}/prompts`, context)
const pluginPrompts = loadModule(`${id}/prompts`, context)
if (pluginPrompts) {
options = await inquirer.prompt(pluginPrompts)
}

View File

@@ -0,0 +1,16 @@
const resolve = require('resolve')
exports.resolveModule = function resolveModule (request, context) {
let resolvedPath
try {
resolvedPath = resolve.sync(request, { basedir: context })
} catch (e) {}
return resolvedPath
}
exports.loadModule = function loadModule (request, context) {
const resolvedPath = exports.resolveModule(request, context)
if (resolvedPath) {
return require(resolvedPath)
}
}