mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-04-29 16:30:33 -05:00
fix(cli): resolve plugins relative to the package context (#5794)
Co-authored-by: Haoqun Jiang <haoqunjiang@gmail.com>
This commit is contained in:
@@ -7,7 +7,7 @@ const PluginAPI = require('./PluginAPI')
|
||||
const dotenv = require('dotenv')
|
||||
const dotenvExpand = require('dotenv-expand')
|
||||
const defaultsDeep = require('lodash.defaultsdeep')
|
||||
const { chalk, warn, error, isPlugin, resolvePluginId, loadModule, resolvePkg } = require('@vue/cli-shared-utils')
|
||||
const { chalk, warn, error, isPlugin, resolvePluginId, loadModule, resolvePkg, resolveModule } = require('@vue/cli-shared-utils')
|
||||
|
||||
const { defaults, validate } = require('./options')
|
||||
const checkWebpack = require('@vue/cli-service/lib/util/checkWebpack')
|
||||
@@ -143,9 +143,9 @@ module.exports = class Service {
|
||||
}
|
||||
|
||||
resolvePlugins (inlinePlugins, useBuiltIn) {
|
||||
const idToPlugin = id => ({
|
||||
const idToPlugin = (id, absolutePath) => ({
|
||||
id: id.replace(/^.\//, 'built-in:'),
|
||||
apply: require(id)
|
||||
apply: require(absolutePath || id)
|
||||
})
|
||||
|
||||
let plugins
|
||||
@@ -161,7 +161,7 @@ module.exports = class Service {
|
||||
'./config/css',
|
||||
'./config/prod',
|
||||
'./config/app'
|
||||
].map(idToPlugin)
|
||||
].map((id) => idToPlugin(id))
|
||||
|
||||
if (inlinePlugins) {
|
||||
plugins = useBuiltIn !== false
|
||||
@@ -176,16 +176,15 @@ module.exports = class Service {
|
||||
this.pkg.optionalDependencies &&
|
||||
id in this.pkg.optionalDependencies
|
||||
) {
|
||||
let apply = () => {}
|
||||
try {
|
||||
apply = require(id)
|
||||
} catch (e) {
|
||||
let apply = loadModule(id, this.pkgContext)
|
||||
if (!apply) {
|
||||
warn(`Optional dependency ${id} is not installed.`)
|
||||
apply = () => {}
|
||||
}
|
||||
|
||||
return { id, apply }
|
||||
} else {
|
||||
return idToPlugin(id)
|
||||
return idToPlugin(id, resolveModule(id, this.pkgContext))
|
||||
}
|
||||
})
|
||||
plugins = builtInPlugins.concat(projectPlugins)
|
||||
|
||||
@@ -50,6 +50,13 @@ const resolve = semver.satisfies(process.version, '>=10.0.0')
|
||||
: resolveFallback
|
||||
|
||||
exports.resolveModule = function (request, context) {
|
||||
// createRequire doesn't work with jest mock modules
|
||||
// (which we used in migrator for inquirer, and in tests for cli-service)
|
||||
// TODO: it's supported in Jest 25
|
||||
if (process.env.VUE_CLI_TEST && (request.endsWith('migrator') || context === '/')) {
|
||||
return request
|
||||
}
|
||||
|
||||
let resolvedPath
|
||||
try {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user