小程序 支持json中 componentGenerics的编译
This commit is contained in:
parent
1d1328cb5d
commit
bf1d711196
|
|
@ -252,9 +252,8 @@ class OakWeChatMpPlugin {
|
||||||
async getComponents(components, instance) {
|
async getComponents(components, instance) {
|
||||||
try {
|
try {
|
||||||
const { debugPanel } = this.options;
|
const { debugPanel } = this.options;
|
||||||
const { usingComponents = {} } = fsExtra.readJSONSync(
|
const { usingComponents = {}, componentGenerics = {} } =
|
||||||
`${instance}.json`
|
fsExtra.readJSONSync(`${instance}.json`);
|
||||||
);
|
|
||||||
const instanceDir = path.parse(instance).dir;
|
const instanceDir = path.parse(instance).dir;
|
||||||
|
|
||||||
for (const k of Object.keys(usingComponents)) {
|
for (const k of Object.keys(usingComponents)) {
|
||||||
|
|
@ -281,6 +280,32 @@ class OakWeChatMpPlugin {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const aliasPath = this.getAliasPath(c);
|
||||||
|
if (aliasPath) {
|
||||||
|
if (!components.has(aliasPath)) {
|
||||||
|
components.add(aliasPath);
|
||||||
|
await this.getComponents(components, aliasPath);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const component = replaceDoubleSlash(
|
||||||
|
path.resolve(instanceDir, c)
|
||||||
|
);
|
||||||
|
if (!components.has(component)) {
|
||||||
|
const component2 = replaceDoubleSlash(
|
||||||
|
path.resolve(this.basePath, component)
|
||||||
|
);
|
||||||
|
if (!components.has(component2)) {
|
||||||
|
components.add(component2);
|
||||||
|
await this.getComponents(components, component);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 抽象节点的默认组件
|
||||||
|
for (const k of Object.keys(componentGenerics)) {
|
||||||
|
const componentGeneric = componentGenerics[k];
|
||||||
|
const c = componentGeneric.default;
|
||||||
|
|
||||||
const aliasPath = this.getAliasPath(c);
|
const aliasPath = this.getAliasPath(c);
|
||||||
if (aliasPath) {
|
if (aliasPath) {
|
||||||
if (!components.has(aliasPath)) {
|
if (!components.has(aliasPath)) {
|
||||||
|
|
@ -565,13 +590,13 @@ class OakWeChatMpPlugin {
|
||||||
|
|
||||||
let usingComponents = {};
|
let usingComponents = {};
|
||||||
if (appJson.usingComponents) {
|
if (appJson.usingComponents) {
|
||||||
for (let ck of Object.keys(appJson.usingComponents)) {
|
for (let c of Object.keys(appJson.usingComponents)) {
|
||||||
let component = appJson.usingComponents[ck];
|
let component = appJson.usingComponents[c];
|
||||||
if (ck === debugPanel.name && !debugPanel.show) {
|
if (c === debugPanel.name && !debugPanel.show) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
component = this.getReplaceAlias(component);
|
component = this.getReplaceAlias(component);
|
||||||
usingComponents[ck] = component;
|
usingComponents[c] = component;
|
||||||
}
|
}
|
||||||
appJson.usingComponents = usingComponents;
|
appJson.usingComponents = usingComponents;
|
||||||
}
|
}
|
||||||
|
|
@ -591,8 +616,8 @@ class OakWeChatMpPlugin {
|
||||||
|
|
||||||
let usingComponents = {};
|
let usingComponents = {};
|
||||||
if (json.usingComponents) {
|
if (json.usingComponents) {
|
||||||
for (let ck of Object.keys(json.usingComponents)) {
|
for (let c of Object.keys(json.usingComponents)) {
|
||||||
let component = json.usingComponents[ck];
|
let component = json.usingComponents[c];
|
||||||
|
|
||||||
const alias = this.getAlias(component);
|
const alias = this.getAlias(component);
|
||||||
if (alias) {
|
if (alias) {
|
||||||
|
|
@ -607,11 +632,37 @@ class OakWeChatMpPlugin {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
usingComponents[ck] = component;
|
usingComponents[c] = component;
|
||||||
}
|
}
|
||||||
json.usingComponents = usingComponents;
|
json.usingComponents = usingComponents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let componentGenerics = {};
|
||||||
|
if (json.componentGenerics) {
|
||||||
|
for (let c of Object.keys(json.componentGenerics)) {
|
||||||
|
const componentGeneric = json.componentGenerics[c];
|
||||||
|
let component = componentGeneric.default;
|
||||||
|
|
||||||
|
const alias = this.getAlias(component);
|
||||||
|
if (alias) {
|
||||||
|
component = this.getReplaceAlias(component);
|
||||||
|
|
||||||
|
const parentPath = path.resolve(this.basePath, entry);
|
||||||
|
const parentDir = path.parse(parentPath).dir;
|
||||||
|
component = replaceDoubleSlash(
|
||||||
|
path.relative(
|
||||||
|
parentDir,
|
||||||
|
path.resolve(this.basePath, component)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
componentGenerics[c] = Object.assign(componentGeneric, {
|
||||||
|
default: component,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
json.componentGenerics = componentGenerics;
|
||||||
|
}
|
||||||
|
|
||||||
// 将locales中的pageTitle复制到小程序中的navigationBarTitleText
|
// 将locales中的pageTitle复制到小程序中的navigationBarTitleText
|
||||||
const parsed = path.parse(assets);
|
const parsed = path.parse(assets);
|
||||||
if (parsed.name === 'index') {
|
if (parsed.name === 'index') {
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,10 @@
|
||||||
import './utils/polyfill';
|
import './utils/polyfill';
|
||||||
|
|
||||||
import initialize from '@project/initialize';
|
|
||||||
import { handler as exceptionHandler } from '@project/exceptionHandler';
|
import { handler as exceptionHandler } from '@project/exceptionHandler';
|
||||||
import { createComponent } from '@project/page';
|
|
||||||
import { compareVersion } from 'oak-domain/lib/utils/version';
|
import { compareVersion } from 'oak-domain/lib/utils/version';
|
||||||
/**
|
|
||||||
* 初始化,小程序这里必须输入访问的目标域名,系统根据domain和system的关系来判定appId
|
|
||||||
*/
|
|
||||||
import { host, sdVersion } from './configuration';
|
|
||||||
const { features } = initialize('wechatMp', host);
|
|
||||||
|
|
||||||
Object.assign(global, {
|
import { sdkVersion } from './configuration';
|
||||||
features,
|
import { features } from './initialize';
|
||||||
OakComponent: (options: any) => createComponent(options, features),
|
|
||||||
});
|
|
||||||
|
|
||||||
export interface IAppOption {
|
export interface IAppOption {
|
||||||
globalData: {
|
globalData: {
|
||||||
|
|
@ -28,7 +19,7 @@ App<IAppOption>({
|
||||||
async onLaunch() {
|
async onLaunch() {
|
||||||
//微信SDKVersion比较,检查小程序有没有新版本发布
|
//微信SDKVersion比较,检查小程序有没有新版本发布
|
||||||
const curVersion = wx.getSystemInfoSync().SDKVersion;
|
const curVersion = wx.getSystemInfoSync().SDKVersion;
|
||||||
if (compareVersion(curVersion, sdVersion) >= 0) {
|
if (compareVersion(curVersion, sdkVersion) >= 0) {
|
||||||
const updateManager = wx.getUpdateManager();
|
const updateManager = wx.getUpdateManager();
|
||||||
updateManager.onCheckForUpdate(({ hasUpdate }) => {
|
updateManager.onCheckForUpdate(({ hasUpdate }) => {
|
||||||
if (hasUpdate) {
|
if (hasUpdate) {
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ const URL = { // 服务器地址数组,和domain中
|
||||||
};
|
};
|
||||||
|
|
||||||
const host = URL[envVersion];
|
const host = URL[envVersion];
|
||||||
const sdVersion = '2.25.1'; // 小程序运行所需要的sdk最低版本
|
const sdkVersion = '2.25.1'; // 小程序运行所需要的sdk最低版本
|
||||||
|
|
||||||
export {
|
export {
|
||||||
host,
|
host,
|
||||||
sdVersion,
|
sdkVersion,
|
||||||
};
|
};
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
|
||||||
|
import initialize from '@project/initialize';
|
||||||
|
import { createComponent } from '@project/page';
|
||||||
|
import { host } from './configuration';
|
||||||
|
import { getAppType } from './utils/env';
|
||||||
|
|
||||||
|
const appType = getAppType();
|
||||||
|
|
||||||
|
const { features } = initialize(appType, host);
|
||||||
|
|
||||||
|
Object.assign(global, {
|
||||||
|
features,
|
||||||
|
OakComponent: (options: any) => createComponent(options, features),
|
||||||
|
});
|
||||||
|
|
||||||
|
export {
|
||||||
|
features,
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
type AppType = 'wechatMp';
|
||||||
|
|
||||||
|
export function getAppType() {
|
||||||
|
return 'wechatMp' as AppType;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue