提交 447322fc 编写于 作者: fxy060608's avatar fxy060608

wip(mp-alipay): app.json support usingComponents (#3525)

上级 d6020a2b
......@@ -54,7 +54,9 @@ export function normalizeJsonFilename(filename: string) {
return normalizeNodeModules(filename)
}
export function findChangedJsonFiles() {
export function findChangedJsonFiles(
supportGlobalUsingComponents: boolean = true
) {
const changedJsonFiles = new Map<string, string>()
function findChangedFile(filename: string, json: Record<string, any>) {
const newJson = JSON.parse(JSON.stringify(json))
......@@ -66,6 +68,9 @@ export function findChangedJsonFiles() {
// 格式化为相对路径,这样作为分包也可以直接运行
// app.json mp-baidu 在 win 不支持相对路径。所有平台改用绝对路径
if (filename !== 'app') {
if (!supportGlobalUsingComponents) {
// TODO 从 appJsonCache 中读取 usingComponents 并 补充到 usingComponents 中
}
Object.keys(usingComponents).forEach((name) => {
const componentFilename = usingComponents[name]
if (componentFilename.startsWith('/')) {
......
......@@ -102,6 +102,7 @@ export const options: UniMiniProgramPluginOptions = {
darkmode: false,
subpackages: true,
plugins: true,
usingComponents: false,
normalize(appJson) {
// 支付宝小程序默认主包,分包 js 模块不共享,会导致 getCurrentInstance,setCurrentInstance 不一致
appJson.subPackageBuildType = 'shared'
......
......@@ -66,6 +66,7 @@ export const options: UniMiniProgramPluginOptions = {
app: {
darkmode: false,
subpackages: true,
usingComponents: true,
},
project: {
filename: projectConfigFilename,
......
......@@ -57,6 +57,7 @@ export const options: UniMiniProgramPluginOptions = {
app: {
darkmode: false,
subpackages: true,
usingComponents: true,
},
project: {
filename: projectConfigFilename,
......
......@@ -66,6 +66,7 @@ export const options: UniMiniProgramPluginOptions = {
app: {
darkmode: false,
subpackages: true,
usingComponents: true,
normalize(appJson) {
const hasUsingComponents =
appJson.usingComponents && Object.keys(appJson.usingComponents).length
......
......@@ -57,6 +57,7 @@ export const options: UniMiniProgramPluginOptions = {
app: {
darkmode: false,
subpackages: true,
usingComponents: true,
},
project: {
filename: projectConfigFilename,
......
......@@ -59,6 +59,10 @@ export interface UniMiniProgramPluginOptions {
* 是否支持发行插件
*/
plugins?: boolean
/**
* 是否支持全局组件
*/
usingComponents: boolean
normalize?: (appJson: AppJson) => AppJson
}
project?: {
......
......@@ -91,14 +91,16 @@ export function uniPagesJsonPlugin(
}
},
generateBundle() {
findChangedJsonFiles().forEach((value, key) => {
debugPagesJson('json.changed', key)
this.emitFile({
type: 'asset',
fileName: key + '.json',
source: value,
})
})
findChangedJsonFiles(options.app.usingComponents).forEach(
(value, key) => {
debugPagesJson('json.changed', key)
this.emitFile({
type: 'asset',
fileName: key + '.json',
source: value,
})
}
)
},
}
})
......
......@@ -98,6 +98,7 @@ export const options: UniMiniProgramPluginOptions = {
darkmode: true,
subpackages: true,
plugins: true,
usingComponents: true,
},
project: {
filename: projectConfigFilename,
......
......@@ -42,6 +42,7 @@ export const options: UniMiniProgramPluginOptions = {
app: {
darkmode: false,
subpackages: true,
usingComponents: true,
},
json: {
formatAppJson,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册