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

fix: subpackages assets (#3123)

上级 a760498a
......@@ -24,7 +24,13 @@ export function isUniPageSfcFile(
) {
return isVueSfcFile(file) && isUniPageFile(file, inputDir)
}
/**
* 小程序平台慎用,因为该解析不支持 subpackages
* @param inputDir
* @param platform
* @param normalize
* @returns
*/
export const parsePagesJson = (
inputDir: string,
platform: UniApp.PLATFORM,
......@@ -36,7 +42,9 @@ export const parsePagesJson = (
}
return parseJson(jsonStr, true) as UniApp.PagesJson
}
/**
* 该方法解析出来的是不支持 subpackages,会被合并入 pages
*/
export const parsePagesJsonOnce = once(parsePagesJson)
/**
* 目前 App 和 H5 使用了该方法
......@@ -147,7 +155,7 @@ function normalizeSubpackages(
function normalizeSubpackageSubNVues(
root: string,
style: UniApp.PagesJsonPageStyle
style: UniApp.PagesJsonPageStyle = { navigationBar: {} }
) {
const platformStyle = style['app'] || style['app-plus']
if (!platformStyle) {
......@@ -438,3 +446,19 @@ function normalizePullToRefresh(
): UniApp.PageRefreshOptions | undefined {
return pageStyle.pullToRefresh
}
function parseSubpackagesRoot(inputDir: string, platform: UniApp.PLATFORM) {
const pagesJson = parsePagesJson(inputDir, platform, false)
const subpackages = pagesJson.subPackages || pagesJson.subpackages
const roots: string[] = []
if (isArray(subpackages)) {
subpackages.forEach(({ root }) => {
if (root) {
roots.push(root)
}
})
}
return roots
}
export const parseSubpackagesRootOnce = once(parseSubpackagesRoot)
import { Plugin } from 'vite'
import path from 'path'
import debug from 'debug'
import type { Plugin } from 'vite'
import {
PUBLIC_DIR,
uniViteCopyPlugin,
UniViteCopyPluginTarget,
parseSubpackagesRootOnce,
normalizePath,
} from '@dcloudio/uni-cli-shared'
import { VitePluginUniResolvedOptions } from '..'
const debugCopy = debug('vite:uni:copy')
export function uniCopyPlugin({
outputDir,
copyOptions,
}: Pick<VitePluginUniResolvedOptions, 'outputDir' | 'copyOptions'>): Plugin {
const assets = [PUBLIC_DIR + '/**/*', 'uni_modules/*/' + PUBLIC_DIR + '/**/*']
const staticDir = PUBLIC_DIR + '/**/*'
const uniModulesStaticDir = 'uni_modules/*/' + PUBLIC_DIR + '/**/*'
const assets = [staticDir, uniModulesStaticDir]
const subpackages = parseSubpackagesRootOnce(
process.env.UNI_INPUT_DIR,
process.env.UNI_PLATFORM
)
subpackages.forEach((root) => {
assets.push(normalizePath(path.join(root, staticDir)))
assets.push(normalizePath(path.join(root, uniModulesStaticDir)))
})
copyOptions!.assets.forEach((asset) => {
assets.push(asset)
})
......@@ -22,6 +38,7 @@ export function uniCopyPlugin({
},
]
targets.push(...copyOptions!.targets)
debugCopy(targets)
return uniViteCopyPlugin({
targets,
verbose: process.env.DEBUG ? true : false,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册