You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
4.6 KiB
155 lines
4.6 KiB
const isDef = v => v !== undefined
|
|
module.exports = api => {
|
|
api.describeConfig({
|
|
id: 'dcloudio.uni-app',
|
|
name: 'uni-app',
|
|
description: '配置 uni-app 项目',
|
|
link: 'https://uniapp.dcloud.io/',
|
|
icon: '/_plugin/%40dcloudio%2Fvue-cli-plugin-uni/logo.png',
|
|
files: {
|
|
manifest: {
|
|
json: ['src/manifest.json']
|
|
}
|
|
},
|
|
onRead: ({
|
|
data: {
|
|
manifest: {
|
|
name,
|
|
h5 = {}
|
|
}
|
|
}
|
|
}) => ({
|
|
tabs: [{
|
|
id: 'h5',
|
|
label: 'h5',
|
|
icon: '/_plugin/%40dcloudio%2Fvue-cli-plugin-uni/h5.png',
|
|
prompts: [{
|
|
name: 'title',
|
|
type: 'input',
|
|
default: '',
|
|
value: name || h5.title,
|
|
message: '应用名称',
|
|
description: '应用的名称',
|
|
group: '基础设置',
|
|
link: 'https://uniapp.dcloud.io/collocation/manifest?id=h5'
|
|
}, {
|
|
name: 'base',
|
|
type: 'input',
|
|
default: '/',
|
|
value: h5.router && h5.router.base,
|
|
message: 'Base Url',
|
|
description: '应用的部署地址,如 \'/my-app/\'。如果留空,所有资源将使用相对路径。',
|
|
group: '基础设置',
|
|
link: 'https://uniapp.dcloud.io/collocation/manifest?id=h5'
|
|
}, {
|
|
name: 'mode',
|
|
type: 'list',
|
|
default: 'hash',
|
|
choices: [{
|
|
name: 'hash',
|
|
value: 'hash'
|
|
},
|
|
{
|
|
name: 'history',
|
|
value: 'history'
|
|
}
|
|
],
|
|
value: h5.router && h5.router.mode,
|
|
message: '路由模式',
|
|
description: '选择路由模式,history 模式需要服务器配置',
|
|
group: '基础设置',
|
|
link: 'https://uniapp.dcloud.io/collocation/manifest?id=h5'
|
|
},
|
|
{
|
|
name: 'loading',
|
|
type: 'input',
|
|
default: 'AsyncLoading',
|
|
value: h5.async && h5.async.loading,
|
|
message: '加载组件',
|
|
description: '页面按需加载时显示的组件(需注册为全局组件)',
|
|
group: '页面按需加载配置',
|
|
link: 'https://uniapp.dcloud.io/collocation/manifest?id=h5-async'
|
|
},
|
|
{
|
|
name: 'error',
|
|
type: 'input',
|
|
default: 'AsyncError',
|
|
value: h5.async && h5.async.error,
|
|
message: '错误组件',
|
|
description: '页面按需加载失败时显示的组件(需注册为全局组件)',
|
|
group: '页面按需加载配置',
|
|
link: 'https://uniapp.dcloud.io/collocation/manifest?id=h5-async'
|
|
},
|
|
{
|
|
name: 'delay',
|
|
type: 'input',
|
|
default: 200,
|
|
value: h5.async && h5.async.delay,
|
|
message: '延迟时间',
|
|
description: '页面按需加载展示 loading 组件的延迟时间(页面 js 若在 delay 时间内加载完成,则不会显示 loading 组件)',
|
|
group: '页面按需加载配置',
|
|
link: 'https://uniapp.dcloud.io/collocation/manifest?id=h5-async'
|
|
},
|
|
{
|
|
name: 'timeout',
|
|
type: 'input',
|
|
default: 3000,
|
|
value: h5.async && h5.async.timeout,
|
|
message: '超时时间',
|
|
description: '页面按需加载超时时间(超时后展示 error 对应的组件)',
|
|
group: '页面按需加载配置',
|
|
link: 'https://uniapp.dcloud.io/collocation/manifest?id=h5-async'
|
|
}
|
|
]
|
|
}]
|
|
|
|
}),
|
|
onWrite: async ({
|
|
api,
|
|
prompts
|
|
}) => {
|
|
const h5 = {}
|
|
|
|
const title = await api.getAnswer('title')
|
|
if (isDef(title)) {
|
|
h5.title = title
|
|
}
|
|
|
|
const base = await api.getAnswer('base')
|
|
const mode = await api.getAnswer('mode')
|
|
if (isDef(base) || isDef(mode)) {
|
|
h5.router = {}
|
|
if (isDef(base)) {
|
|
h5.router.base = base
|
|
}
|
|
if (isDef(mode)) {
|
|
h5.router.mode = mode
|
|
}
|
|
}
|
|
|
|
const loading = await api.getAnswer('loading')
|
|
const error = await api.getAnswer('error')
|
|
const delay = await api.getAnswer('delay')
|
|
const timeout = await api.getAnswer('timeout')
|
|
if (isDef(loading) || isDef(error) || isDef(delay) || isDef(timeout)) {
|
|
h5.async = {}
|
|
if (isDef(loading)) {
|
|
h5.async.loading = loading
|
|
}
|
|
if (isDef(error)) {
|
|
h5.async.error = error
|
|
}
|
|
if (isDef(delay)) {
|
|
h5.async.delay = delay
|
|
}
|
|
if (isDef(timeout)) {
|
|
h5.async.timeout = timeout
|
|
}
|
|
}
|
|
|
|
api.setData('manifest', {
|
|
h5
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|