From 249759c50d216959cfc35d8b694af75a5235652d Mon Sep 17 00:00:00 2001 From: LinXi Date: Tue, 18 Dec 2018 18:01:47 +0800 Subject: [PATCH] support usingComponents in app.json --- src/index.js | 23 +++++++++++++++------- test/src/js/app.json | 3 +++ test/src/js/pages/index/index.json | 3 --- test/src/js/pages/index/index.wxml | 1 + test/src/js/pages/product/productList.json | 6 +----- 5 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/index.js b/src/index.js index 3220abd..2afeab4 100644 --- a/src/index.js +++ b/src/index.js @@ -246,11 +246,16 @@ export default class WXAppPlugin { async getEntryResource() { const appJSONFile = resolve(this.base, 'app.json'); - const { pages = [], subPackages = [], tabBar = {} } = await readJson( + const { pages = [], subPackages = [], tabBar = {}, usingComponents = {} } = await readJson( appJSONFile ); const components = new Set(); + + for (const relativeComponent of values(usingComponents)) { + await this.addComponent(components, relativeComponent, parse(appJSONFile).dir); + } + for (const page of pages) { await this.getComponents(components, resolve(this.base, page)); } @@ -282,12 +287,16 @@ export default class WXAppPlugin { )) || {}; const componentBase = parse(instance).dir; for (const relativeComponent of values(usingComponents)) { - if (relativeComponent.indexOf('plugin://') === 0) continue; - const component = resolve(componentBase, relativeComponent); - if (!components.has(component)) { - components.add(relative(this.base, component)); - await this.getComponents(components, component); - } + await this.addComponent(components, relativeComponent, componentBase); + } + } + + async addComponent(components, relativeComponent, componentBase) { + if (relativeComponent.indexOf('plugin://') === 0) return; + const component = resolve(componentBase, relativeComponent); + if (!components.has(component)) { + components.add(relative(this.base, component)); + await this.getComponents(components, component); } } diff --git a/test/src/js/app.json b/test/src/js/app.json index 12ffc49..8321101 100644 --- a/test/src/js/app.json +++ b/test/src/js/app.json @@ -30,5 +30,8 @@ "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle":"black" + }, + "usingComponents": { + "index-component": "./components/index-component/index-component" } } diff --git a/test/src/js/pages/index/index.json b/test/src/js/pages/index/index.json index 22cd1a7..2c63c08 100644 --- a/test/src/js/pages/index/index.json +++ b/test/src/js/pages/index/index.json @@ -1,5 +1,2 @@ { - "usingComponents": { - "index-component": "../../components/index-component/index-component" - } } diff --git a/test/src/js/pages/index/index.wxml b/test/src/js/pages/index/index.wxml index 6fa58f8..2cf61df 100644 --- a/test/src/js/pages/index/index.wxml +++ b/test/src/js/pages/index/index.wxml @@ -1,5 +1,6 @@ + {{userInfo.nickName}} diff --git a/test/src/js/pages/product/productList.json b/test/src/js/pages/product/productList.json index 19af1ed..7a73a41 100644 --- a/test/src/js/pages/product/productList.json +++ b/test/src/js/pages/product/productList.json @@ -1,6 +1,2 @@ { - "usingComponents": { - "index-component": "../../components/index-component/index-component" - } - } - \ No newline at end of file +} \ No newline at end of file