1
1
const path = require ( 'path' )
2
2
const resolve = require ( 'resolve' )
3
3
const { findExisting } = require ( './util' )
4
+ const { loadPartialConfigSync } = require ( '@babel/core' )
4
5
5
6
module . exports = function createConfigPlugin ( context , entry , asLib ) {
6
7
return {
7
8
id : '@vue/cli-service-global-config' ,
8
9
apply : ( api , options ) => {
10
+ const _entry = path . resolve ( context , entry )
9
11
api . chainWebpack ( config => {
10
12
// entry is *.vue file, create alias for built-in js entry
11
13
if ( / \. v u e $ / . test ( entry ) ) {
12
14
config . resolve
13
15
. alias
14
- . set ( '~entry' , path . resolve ( context , entry ) )
16
+ . set ( '~entry' , _entry )
15
17
entry = require . resolve ( '../template/main.js' )
16
18
} else {
17
19
// make sure entry is relative
@@ -93,6 +95,9 @@ module.exports = function createConfigPlugin (context, entry, asLib) {
93
95
? ! ! ( require ( path . join ( context , 'package.json' ) ) . eslintConfig )
94
96
: ! ! ESLintConfigFile
95
97
98
+ const babelConfig = loadPartialConfigSync ( { filename : _entry } )
99
+ const hasBabelConfig = ! ! babelConfig && babelConfig . hasFilesystemConfig ( )
100
+
96
101
// set inline eslint options
97
102
config . module
98
103
. rule ( 'eslint' )
@@ -111,7 +116,9 @@ module.exports = function createConfigPlugin (context, entry, asLib) {
111
116
'eslint:recommended'
112
117
] ,
113
118
parserOptions : {
114
- parser : 'babel-eslint'
119
+ parser : '@babel/eslint-parser' ,
120
+ requireConfigFile : hasBabelConfig ,
121
+ babelOptions
115
122
} ,
116
123
rules : {
117
124
'no-console' : process . env . NODE_ENV === 'production' ? 'warn' : 'off' ,
0 commit comments