11// babel-plugin-parse-mp-info.js
22
3- const generate = require ( 'babel- generator' ) . default
3+ const generate = require ( '@ babel/ generator' ) . default
44const babelon = require ( 'babelon' )
5-
6- function getImportsMap ( metadata ) {
7- let { importsMap } = metadata
8- const { imports } = metadata . modules
9-
10- if ( ! importsMap ) {
11- importsMap = { }
12- imports . forEach ( m => {
13- m . specifiers . forEach ( v => {
14- importsMap [ v . local ] = m . source
15- } )
16- } )
17- metadata . importsMap = importsMap
18- }
19-
20- return metadata
21- }
5+ const { getImportsMap } = require ( './util' )
226
237// 解析 config
248const traverseConfigVisitor = {
@@ -44,8 +28,14 @@ const configVisitor = {
4428 path . remove ( )
4529 } ,
4630 NewExpression : function ( path ) {
47- const { metadata } = path . hub . file
48- const { importsMap } = getImportsMap ( metadata )
31+ const file = path . hub . file
32+ const { metadata } = file
33+ // enhance: 修复在babel@7(@babel)下获取以下参数的方式
34+ const importsData = getImportsMap ( file )
35+ let importsMap = { }
36+ importsData . forEach ( item => {
37+ importsMap = Object . assign ( importsMap , item . importsMap )
38+ } )
4939
5040 const calleeName = path . node . callee . name
5141 const isVue = / v u e $ / . test ( importsMap [ calleeName ] )
@@ -76,8 +66,10 @@ const traverseComponentsVisitor = {
7666 }
7767 path . stop ( )
7868
79- const { metadata } = path . hub . file
80- const { importsMap } = getImportsMap ( metadata )
69+ const file = path . hub . file
70+ const { metadata } = file
71+ // enhance: 修复在babel@7(@babel)下获取以下参数的方式
72+ const importsMap = getImportsMap ( file )
8173
8274 // 找到所有的 imports
8375 const { properties } = path . node . value
@@ -108,7 +100,8 @@ let globalComponents = {}
108100const globalComponentsVisitor = {
109101 CallExpression ( path ) {
110102 const { callee, arguments : args } = path . node
111- const { metadata } = path . hub . file
103+ const file = path . hub . file
104+ const { metadata } = file
112105 if ( ! callee . object || ! callee . property ) {
113106 return
114107 }
@@ -119,7 +112,8 @@ const globalComponentsVisitor = {
119112 if ( ! args [ 1 ] ) {
120113 throw new Error ( 'Vue.component()需要两个参数' )
121114 }
122- const { importsMap } = getImportsMap ( metadata )
115+ // enhance: 修复在babel@7(@babel)下获取以下参数的方式
116+ const { importsMap } = getImportsMap ( file )
123117 globalComponents [ args [ 0 ] . value ] = importsMap [ args [ 1 ] . name ]
124118 }
125119 metadata . globalComponents = globalComponents
0 commit comments