提交 1696e664 编写于 作者: fxy060608's avatar fxy060608

feat(qa): easycom

上级 2fa7cd5d
......@@ -334,21 +334,41 @@ let uniAutoImportComponents = []
let uniAutoImportScanComponents = []
function initAutoImportScanComponents () {
const componentsPath = path.resolve(process.env.UNI_INPUT_DIR, 'components')
let uniQuickAppAutoImportScanComponents = false
function getAutoComponentsByDir (componentsPath, absolute = false) {
const components = {}
try {
fs.readdirSync(componentsPath).forEach(name => {
if (fs.existsSync(path.resolve(componentsPath, name, name + '.vue'))) {
components[`^${name}$`] = `@/components/${name}/${name}.vue`
} else if (fs.existsSync(path.resolve(componentsPath, name, name + '.nvue'))) {
components[`^${name}$`] = `@/components/${name}/${name}.nvue`
const folder = path.resolve(componentsPath, name)
const importDir = absolute ? normalizePath(folder) : `@/components/${name}`
if (fs.existsSync(path.resolve(folder, name + '.vue'))) {
components[`^${name}$`] = `${importDir}/${name}.vue`
} else if (fs.existsSync(path.resolve(folder, name + '.nvue'))) {
components[`^${name}$`] = `${importDir}/${name}.nvue`
}
})
} catch (e) {}
return components
}
uniAutoImportScanComponents = parseUsingAutoImportComponents(components)
function initAutoImportScanComponents () {
const componentsPath = path.resolve(process.env.UNI_INPUT_DIR, 'components')
const components = getAutoComponentsByDir(componentsPath)
if (process.env.UNI_PLATFORM === 'quickapp') {
if (!uniQuickAppAutoImportScanComponents) {
uniQuickAppAutoImportScanComponents = getAutoComponentsByDir(
path.resolve(require.resolve('@dcloudio/uni-quickapp'), '../../components'),
true
)
}
// 平台内置组件优先级高
Object.assign(components, uniQuickAppAutoImportScanComponents)
}
uniAutoImportScanComponents = parseUsingAutoImportComponents(components)
refreshAutoComponentMap()
}
......
{
"name": "@dcloudio/uni-quickapp",
"version": "2.0.0-alpha-24720191216006",
"description": "uni-app quickapp",
"description": "uni-app quickapp",
"main": "dist/vue.prod.js",
"repository": {
"type": "git",
"url": "git+https://github.com/dcloudio/uni-app.git",
......
......@@ -86,7 +86,10 @@ function compileTemplate (source, options, compile) {
const compilerModule = {
preTransformNode (el, options) {
if (isComponent(el.tag) && el.tag !== 'App') { // App.vue
if (process.env.UNI_PLATFORM === 'quickapp') {
// 排查所有标签
(options.isUnaryTag.autoComponents || (options.isUnaryTag.autoComponents = new Set())).add(el.tag)
} else if (isComponent(el.tag) && el.tag !== 'App') { // App.vue
// 挂在 isUnaryTag 上边,可以保证外部访问到
(options.isUnaryTag.autoComponents || (options.isUnaryTag.autoComponents = new Set())).add(el.tag)
}
......@@ -95,4 +98,4 @@ const compilerModule = {
module.exports = {
compileTemplate,
module: compilerModule
}
}
......@@ -235,19 +235,20 @@ if (process.env.UNI_USING_V3) {
// Transform each property declaration here
decl.value = tranformValue(decl, opts)
})
rule.selectors = rule.selectors.map(complexSelector => {
return transformSelector(complexSelector, simpleSelectors => {
return simpleSelectors.walkTags(tag => {
const k = tag.value
const v = CSS_TAGS[k]
if (v) {
tag.value = v === 'r'
? `._${k}` : v
}
})
})
})
if (process.env.UNI_PLATFORM !== 'quickapp') {
rule.selectors = rule.selectors.map(complexSelector => {
return transformSelector(complexSelector, simpleSelectors => {
return simpleSelectors.walkTags(tag => {
const k = tag.value
const v = CSS_TAGS[k]
if (v) {
tag.value = v === 'r'
? `._${k}` : v
}
})
})
})
}
})
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册