From 64a8b213d4929958ef98debeacda836e8c29b58a Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Thu, 12 Nov 2020 15:16:47 +0800 Subject: [PATCH] feat(cli): easycom (uni_modules) --- packages/uni-cli-shared/lib/pages.js | 52 +++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/packages/uni-cli-shared/lib/pages.js b/packages/uni-cli-shared/lib/pages.js index 965591a88e..2dfd2df33a 100644 --- a/packages/uni-cli-shared/lib/pages.js +++ b/packages/uni-cli-shared/lib/pages.js @@ -8,7 +8,7 @@ const { capitalize } = require('./util') -const { +const { getJson, parseJson } = require('./json') @@ -32,10 +32,10 @@ function getNVueMainEntry () { } return nvueMainEntry } - -function getPagesJson () { - return processPagesJson(getJson('pages.json', true)) -} + +function getPagesJson () { + return processPagesJson(getJson('pages.json', true)) +} function parsePagesJson (content, loader) { return processPagesJson(parseJson(content, true), loader) @@ -359,11 +359,45 @@ function getAutoComponentsByDir (componentsPath, absolute = false) { return components } -function initAutoImportScanComponents () { - const componentsPath = path.resolve(process.env.UNI_INPUT_DIR, 'components') - - const components = getAutoComponentsByDir(componentsPath) +function initAutoComponents () { + const allComponents = {} + const componentsDirs = [path.resolve(process.env.UNI_INPUT_DIR, 'components')] + global.uniModules.forEach(module => { + componentsDirs.push(path.resolve(process.env.UNI_INPUT_DIR, 'uni_modules', module, 'components')) + }) + componentsDirs.forEach(componentsDir => { + const currentComponents = getAutoComponentsByDir(componentsDir, true) + Object.keys(currentComponents).forEach(name => { + (allComponents[name] || (allComponents[name] = [])).push(currentComponents[name]) + }) + }) + const components = {} + const conflictFiles = [] + Object.keys(allComponents).forEach(name => { + const files = allComponents[name] + components[name] = files[0] + if (files.length > 1) { + conflictFiles.push(files) + } + }) + if (conflictFiles.length > 0) { + conflictFiles.forEach(files => { + let usedFile + console.warn('easycom组件冲突:[' + files.map((file, index) => { + file = path.relative(process.env.UNI_INPUT_DIR, file) + if (index === 0) { + usedFile = file + } + return file + }).join(',') + '],优先使用:' + usedFile) + console.log('\n') + }) + } + return components +} +function initAutoImportScanComponents () { + const components = initAutoComponents() if (process.env.UNI_PLATFORM === 'quickapp-native') { if (!uniQuickAppAutoImportScanComponents) { uniQuickAppAutoImportScanComponents = getAutoComponentsByDir( -- GitLab