@@ -7,7 +7,7 @@ const PluginAPI = require('./PluginAPI')
77const dotenv = require ( 'dotenv' )
88const dotenvExpand = require ( 'dotenv-expand' )
99const defaultsDeep = require ( 'lodash.defaultsdeep' )
10- const { chalk, warn, error, isPlugin, resolvePluginId, loadModule, resolvePkg } = require ( '@vue/cli-shared-utils' )
10+ const { chalk, warn, error, isPlugin, resolvePluginId, loadModule, resolvePkg, resolveModule } = require ( '@vue/cli-shared-utils' )
1111
1212const { defaults, validate } = require ( './options' )
1313const checkWebpack = require ( '@vue/cli-service/lib/util/checkWebpack' )
@@ -143,9 +143,9 @@ module.exports = class Service {
143143 }
144144
145145 resolvePlugins ( inlinePlugins , useBuiltIn ) {
146- const idToPlugin = id => ( {
146+ const idToPlugin = ( id , absolutePath ) => ( {
147147 id : id . replace ( / ^ .\/ / , 'built-in:' ) ,
148- apply : require ( id )
148+ apply : require ( absolutePath || id )
149149 } )
150150
151151 let plugins
@@ -161,7 +161,7 @@ module.exports = class Service {
161161 './config/css' ,
162162 './config/prod' ,
163163 './config/app'
164- ] . map ( idToPlugin )
164+ ] . map ( ( id ) => idToPlugin ( id ) )
165165
166166 if ( inlinePlugins ) {
167167 plugins = useBuiltIn !== false
@@ -176,16 +176,15 @@ module.exports = class Service {
176176 this . pkg . optionalDependencies &&
177177 id in this . pkg . optionalDependencies
178178 ) {
179- let apply = ( ) => { }
180- try {
181- apply = require ( id )
182- } catch ( e ) {
179+ let apply = loadModule ( id , this . pkgContext )
180+ if ( ! apply ) {
183181 warn ( `Optional dependency ${ id } is not installed.` )
182+ apply = ( ) => { }
184183 }
185184
186185 return { id, apply }
187186 } else {
188- return idToPlugin ( id )
187+ return idToPlugin ( id , resolveModule ( id , this . pkgContext ) )
189188 }
190189 } )
191190 plugins = builtInPlugins . concat ( projectPlugins )
0 commit comments