diff --git a/packages/uni-cli-shared/src/mp/assets.ts b/packages/uni-cli-shared/src/mp/assets.ts index da119017de0..7ce749d8c5c 100644 --- a/packages/uni-cli-shared/src/mp/assets.ts +++ b/packages/uni-cli-shared/src/mp/assets.ts @@ -1,4 +1,8 @@ +import fs from 'fs' import path from 'path' +import { normalizePath } from '../vite/plugins/vitejs/utils' +import { parseMiniProgramPagesJson } from '../json' + const EXTNAMES = [ '.png', '.jpg', @@ -24,3 +28,28 @@ export function isMiniProgramAssetFile(filename: string) { } return EXTNAMES.includes(path.extname(filename)) } + +export function createCopyComponentDirs(dir: string) { + const dirs = [dir] + dirs.push(normalizePath(path.join('uni_modules/*/' + dir + '/**/*'))) + const { appJson } = parseMiniProgramPagesJson( + fs.readFileSync( + path.resolve(process.env.UNI_INPUT_DIR, 'pages.json'), + 'utf8' + ), + process.env.UNI_PLATFORM, + { subpackages: true } + ) + const roots: string[] = Object.values( + appJson.subPackages || appJson.subpackages || {} + ) + .filter(Boolean) + .map(({ root }) => root) + roots.forEach((root) => { + dirs.push( + normalizePath(path.join(root, dir)), + normalizePath(path.join(root, 'uni_modules/*/' + dir + '/**/*')) + ) + }) + return dirs +} diff --git a/packages/uni-mp-alipay/src/compiler/options.ts b/packages/uni-mp-alipay/src/compiler/options.ts index f86bcb165a6..86b17a4d4da 100644 --- a/packages/uni-mp-alipay/src/compiler/options.ts +++ b/packages/uni-mp-alipay/src/compiler/options.ts @@ -6,6 +6,7 @@ import { COMPONENT_ON_LINK, type MiniProgramCompilerOptions, copyMiniProgramPluginJson, + createCopyComponentDirs, createCopyPluginTarget, createTransformComponentLink, getNativeTags, @@ -99,7 +100,7 @@ export const options: UniMiniProgramPluginOptions = { 'uni-mp-runtime': path.resolve(__dirname, 'uni.mp.esm.js'), }, copyOptions: { - assets: [COMPONENTS_DIR], + assets: createCopyComponentDirs(COMPONENTS_DIR), targets: [ ...(process.env.UNI_MP_PLUGIN ? [copyMiniProgramPluginJson] : []), { diff --git a/packages/uni-mp-baidu/src/compiler/options.ts b/packages/uni-mp-baidu/src/compiler/options.ts index 64fd45e214b..8628754eb52 100644 --- a/packages/uni-mp-baidu/src/compiler/options.ts +++ b/packages/uni-mp-baidu/src/compiler/options.ts @@ -2,6 +2,7 @@ import path from 'path' import type { CompilerOptions } from '@dcloudio/uni-mp-compiler' import { type MiniProgramCompilerOptions, + createCopyComponentDirs, createCopyPluginTarget, getNativeTags, // transformMatchMedia, @@ -95,7 +96,7 @@ export const options: UniMiniProgramPluginOptions = { 'uni-mp-runtime': path.resolve(__dirname, 'uni.mp.esm.js'), }, copyOptions: { - assets: [COMPONENTS_DIR], + assets: createCopyComponentDirs(COMPONENTS_DIR), targets: [createCopyPluginTarget(['ext.json'])], }, }, diff --git a/packages/uni-mp-harmony/src/compiler/options.ts b/packages/uni-mp-harmony/src/compiler/options.ts index 44d1413a5fc..1675d5cf626 100644 --- a/packages/uni-mp-harmony/src/compiler/options.ts +++ b/packages/uni-mp-harmony/src/compiler/options.ts @@ -2,6 +2,7 @@ import path from 'path' import type { CompilerOptions } from '@dcloudio/uni-mp-compiler' import { type MiniProgramCompilerOptions, + createCopyComponentDirs, createCopyPluginTarget, getNativeTags, transformRef, @@ -61,7 +62,7 @@ export const options: UniMiniProgramPluginOptions = { 'uni-mp-runtime': path.resolve(__dirname, 'uni.mp.esm.js'), }, copyOptions: { - assets: [COMPONENTS_DIR], + assets: createCopyComponentDirs(COMPONENTS_DIR), targets: [ { src: ['ascf.config.json'], diff --git a/packages/uni-mp-jd/src/compiler/options.ts b/packages/uni-mp-jd/src/compiler/options.ts index 4fec0ef0f61..ca21e0570a2 100644 --- a/packages/uni-mp-jd/src/compiler/options.ts +++ b/packages/uni-mp-jd/src/compiler/options.ts @@ -3,6 +3,7 @@ import type { CompilerOptions } from '@dcloudio/uni-mp-compiler' import { COMPONENT_CUSTOM_HIDDEN_BIND, type MiniProgramCompilerOptions, + createCopyComponentDirs, getNativeTags, transformComponentLink, transformRef, @@ -80,7 +81,7 @@ export const options: UniMiniProgramPluginOptions = { /** * 静态资源,配置的目录,在 uni_modules 中同样支持 */ - assets: [COMPONENTS_DIR], + assets: createCopyComponentDirs(COMPONENTS_DIR), targets: [ { // FileWatcher这个类监听的文件,文件改动触发整体编译?编译什么? diff --git a/packages/uni-mp-kuaishou/src/compiler/options.ts b/packages/uni-mp-kuaishou/src/compiler/options.ts index 3ed885f3827..ffe9e29de89 100644 --- a/packages/uni-mp-kuaishou/src/compiler/options.ts +++ b/packages/uni-mp-kuaishou/src/compiler/options.ts @@ -2,6 +2,7 @@ import path from 'path' import type { CompilerOptions } from '@dcloudio/uni-mp-compiler' import { type MiniProgramCompilerOptions, + createCopyComponentDirs, createCopyPluginTarget, getNativeTags, transformComponentLink, @@ -65,7 +66,7 @@ export const options: UniMiniProgramPluginOptions = { 'uni-mp-runtime': path.resolve(__dirname, 'uni.mp.esm.js'), }, copyOptions: { - assets: [COMPONENTS_DIR], + assets: createCopyComponentDirs(COMPONENTS_DIR), targets: [ { src: ['project.private.config.json'], diff --git a/packages/uni-mp-qq/src/compiler/options.ts b/packages/uni-mp-qq/src/compiler/options.ts index 34ecdd9ebc2..b30cb0a5adc 100644 --- a/packages/uni-mp-qq/src/compiler/options.ts +++ b/packages/uni-mp-qq/src/compiler/options.ts @@ -3,6 +3,7 @@ import type { CompilerOptions } from '@dcloudio/uni-mp-compiler' import { COMPONENT_CUSTOM_HIDDEN, type MiniProgramCompilerOptions, + createCopyComponentDirs, getNativeTags, transformComponentLink, // transformMatchMedia, @@ -83,7 +84,7 @@ export const options: UniMiniProgramPluginOptions = { 'uni-mp-runtime': path.resolve(__dirname, 'uni.mp.esm.js'), }, copyOptions: { - assets: [COMPONENTS_DIR], + assets: createCopyComponentDirs(COMPONENTS_DIR), targets: [ { src: ['custom-tab-bar', 'project.config.json'], diff --git a/packages/uni-mp-toutiao/src/compiler/options.ts b/packages/uni-mp-toutiao/src/compiler/options.ts index da3b559d997..61ddbe2c672 100644 --- a/packages/uni-mp-toutiao/src/compiler/options.ts +++ b/packages/uni-mp-toutiao/src/compiler/options.ts @@ -2,6 +2,7 @@ import type { CompilerOptions } from '@dcloudio/uni-mp-compiler' import { COMPONENT_CUSTOM_HIDDEN_BIND, type MiniProgramCompilerOptions, + createCopyComponentDirs, createCopyPluginTarget, getNativeTags, transformComponentLink, @@ -89,7 +90,7 @@ export const options: UniMiniProgramPluginOptions = { 'uni-mp-runtime': resolveMiniProgramRuntime(__dirname, 'uni.mp.esm.js'), }, copyOptions: { - assets: [COMPONENTS_DIR], + assets: createCopyComponentDirs(COMPONENTS_DIR), targets: [...commonCopyTargets, createCopyPluginTarget(['ext.json'])], }, }, diff --git a/packages/uni-mp-weixin/src/compiler/options.ts b/packages/uni-mp-weixin/src/compiler/options.ts index 6a3f5829bfb..e0301c61469 100644 --- a/packages/uni-mp-weixin/src/compiler/options.ts +++ b/packages/uni-mp-weixin/src/compiler/options.ts @@ -4,6 +4,7 @@ import { type MiniProgramCompilerOptions, copyMiniProgramPluginJson, copyMiniProgramThemeJson, + createCopyComponentDirs, createCopyPluginTarget, getNativeTags, transformComponentLink, @@ -151,7 +152,7 @@ export const options: UniMiniProgramPluginOptions = { 'uni-mp-runtime': resolveMiniProgramRuntime(__dirname, 'uni.mp.esm.js'), }, copyOptions: { - assets: [COMPONENTS_DIR], + assets: createCopyComponentDirs(COMPONENTS_DIR), targets: [ ...(process.env.UNI_MP_PLUGIN ? [copyMiniProgramPluginJson] : []), { diff --git a/packages/uni-mp-xhs/src/compiler/options.ts b/packages/uni-mp-xhs/src/compiler/options.ts index 088daec0455..7e8cf8f258e 100644 --- a/packages/uni-mp-xhs/src/compiler/options.ts +++ b/packages/uni-mp-xhs/src/compiler/options.ts @@ -2,6 +2,7 @@ import path from 'path' import type { CompilerOptions } from '@vue/compiler-core' import { type MiniProgramCompilerOptions, + createCopyComponentDirs, createCopyPluginTarget, getNativeTags, transformComponentLink, @@ -89,7 +90,7 @@ export const options: UniMiniProgramPluginOptions = { 'uni-mp-runtime': path.resolve(__dirname, 'uni.mp.esm.js'), }, copyOptions: { - assets: [COMPONENTS_DIR], + assets: createCopyComponentDirs(COMPONENTS_DIR), targets: [ // ...(process.env.UNI_MP_PLUGIN ? [copyMiniProgramPluginJson] : []), {