mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-03-09 09:00:16 -05:00
Merge branch 'dev' of github.com:vuejs/vue-cli into feat-ui
This commit is contained in:
@@ -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) => {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
16
packages/@vue/cli/lib/util/module.js
Normal file
16
packages/@vue/cli/lib/util/module.js
Normal 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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user