diff --git a/packages/uni-cli-shared/lib/pages.js b/packages/uni-cli-shared/lib/pages.js index a450c3fa99c6bd0852ff353f4dca8eea5db1f800..5962adb6875e49cdeeeb9d9521ed36f406521537 100644 --- a/packages/uni-cli-shared/lib/pages.js +++ b/packages/uni-cli-shared/lib/pages.js @@ -426,20 +426,25 @@ function isPlainObject (obj) { return _toString.call(obj) === '[object Object]' } +function initBuiltInEasycom (components, usingAutoImportComponents) { + components.forEach(name => { + const easycomName = `^${name}$` + if (!usingAutoImportComponents[easycomName]) { + usingAutoImportComponents[easycomName] = + '@dcloudio/uni-cli-shared/components/' + name + '.vue' + } + }) +} + function initAutoImportComponents (easycom = {}) { let usingAutoImportComponents = easycom.custom || easycom || {} if (!isPlainObject(usingAutoImportComponents)) { usingAutoImportComponents = {} } + initBuiltInEasycom(BUILT_IN_EASYCOMS, usingAutoImportComponents) // 目前仅 mp-weixin 内置支持 page-meta 等组件 if (process.env.UNI_PLATFORM !== 'mp-weixin') { - BUILT_IN_COMPONENTS.forEach(name => { - const easycomName = `^${name}$` - if (!usingAutoImportComponents[easycomName]) { - usingAutoImportComponents[easycomName] = - '@dcloudio/uni-cli-shared/components/' + name + '.vue' - } - }) + initBuiltInEasycom(BUILT_IN_COMPONENTS, usingAutoImportComponents) } const newUsingAutoImportComponentsJson = JSON.stringify(usingAutoImportComponents) @@ -504,13 +509,18 @@ function parseUsingAutoImportComponents (usingAutoImportComponents) { return autoImportComponents } -const BUILT_IN_COMPONENTS = ['page-meta', 'navigation-bar', 'uni-match-media', 'unicloud-db'] +const BUILT_IN_COMPONENTS = ['page-meta', 'navigation-bar', 'uni-match-media'] -function isBuiltInComponent (name) { +const BUILT_IN_EASYCOMS = ['unicloud-db'] + +function isBuiltInComponent (name) { // uni-template-compiler/lib/util.js 识别微信内置组件 return BUILT_IN_COMPONENTS.includes(name) } -function isBuiltInComponentPath (modulePath) { +function isBuiltInComponentPath (modulePath) { // 内置的 easycom 类组件 + if (BUILT_IN_EASYCOMS.find(name => modulePath.includes(name))) { + return true + } return !!BUILT_IN_COMPONENTS.find(name => modulePath.includes(name)) } diff --git a/packages/uni-template-compiler/lib/template/generate.js b/packages/uni-template-compiler/lib/template/generate.js index 41df8181ca1dc95a2da7dbad1429d1acd0f1c72b..df216600c1a9a8717293f9e4e47bc5caa9af62e6 100644 --- a/packages/uni-template-compiler/lib/template/generate.js +++ b/packages/uni-template-compiler/lib/template/generate.js @@ -78,8 +78,9 @@ function processElement (ast, state, isRoot) { if (ast.attr.id && ast.attr.id.indexOf('{{') === 0) { state.tips.add(`id 作为属性保留名,不允许在自定义组件 ${ast.type} 中定义为 props`) } - if (hasOwn(ast.attr, 'data') && platformName !== 'mp-toutiao') { // 百度中会出现异常情况 - state.tips.add(`data 作为属性保留名,不允许在自定义组件 ${ast.type} 中定义为 props`) + if (hasOwn(ast.attr, 'data') && platformName !== 'mp-toutiao') { // 百度中会出现异常情况 + // TODO 暂不输出 + // state.tips.add(`data 作为属性保留名,不允许在自定义组件 ${ast.type} 中定义为 props`) } } }