Skip to content

Commit

Permalink
chore(x-android): 优化 css 插件顺序(为支持unocss做准备)
Browse files Browse the repository at this point in the history
  • Loading branch information
fxy060608 committed Sep 20, 2024
1 parent 7a372b5 commit d1bb504
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 21 deletions.
26 changes: 20 additions & 6 deletions packages/uni-app-uts/src/plugins/android/css.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
parseAssets,
parseVueRequest,
preUVueCss,
removePlugins,
} from '@dcloudio/uni-cli-shared'
import { parse } from '@dcloudio/uni-nvue-styler'

Expand All @@ -25,18 +26,20 @@ import {
} from './uvue/descriptorCache'
import { isVue } from './utils'

export function uniAppCssPlugin(): Plugin {
let resolvedConfig: ResolvedConfig
const name = 'uni:app-uvue-css'
export function uniAppCssPrePlugin(): Plugin {
const name = 'uni:app-uvue-css-pre'
const descriptorOptions: ResolvedOptions = {
...getResolvedOptions(),
sourceMap: false,
}
return {
name,
// 需要提前,因为unocss会在configResolved读取vite:css-post插件
// 所以需要在它之前做替换
enforce: 'pre',
apply: 'build',
configResolved(config) {
resolvedConfig = config
removePlugins(['vite:css', 'vite:css-post'], config)
const uvueCssPostPlugin = cssPostPlugin(config, {
isJsCode: true,
platform: process.env.UNI_PLATFORM,
Expand All @@ -52,7 +55,7 @@ export function uniAppCssPlugin(): Plugin {
}
},
async chunkCssCode(filename, cssCode) {
cssCode = parseAssets(resolvedConfig, cssCode)
cssCode = parseAssets(config, cssCode)
const { code, messages } = await parse(cssCode, {
filename,
logLevel: 'ERROR',
Expand All @@ -72,7 +75,7 @@ export function uniAppCssPlugin(): Plugin {
}).replace(/\t/g, ' ')}`
}
msg += `\n${formatAtFilename(filename)}`
resolvedConfig.logger.error(colors.red(msg))
config.logger.error(colors.red(msg))
}
})
return `export const ${genUTSClassName(
Expand All @@ -96,6 +99,17 @@ export function uniAppCssPlugin(): Plugin {
const index = plugins.findIndex((p) => p.name === 'uni:app-uvue')
plugins.splice(index, 0, uvueCssPostPlugin)
},
}
}

export function uniAppCssPlugin(): Plugin {
let resolvedConfig: ResolvedConfig
return {
name: 'uni:app-uvue-css',
apply: 'build',
configResolved(config) {
resolvedConfig = config
},
async transform(source, filename) {
if (!cssLangRE.test(filename) || commonjsProxyRE.test(filename)) {
return
Expand Down
3 changes: 2 additions & 1 deletion packages/uni-app-uts/src/plugins/android/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
} from '@dcloudio/uni-cli-shared'
import { uniPrePlugin } from './pre'
import { uniAppPlugin } from './plugin'
import { uniAppCssPlugin } from './css'
import { uniAppCssPlugin, uniAppCssPrePlugin } from './css'
import { uniAppMainPlugin } from './mainUTS'
import { uniAppManifestPlugin } from './manifestJson'
import { uniAppPagesPlugin } from './pagesJson'
Expand All @@ -18,6 +18,7 @@ import { uniCloudPlugin } from './unicloud'

export function init() {
return [
uniAppCssPrePlugin(),
...(isNormalCompileTarget() ? [uniDecryptUniModulesPlugin()] : []),
uniPrePlugin(),
...(isNormalCompileTarget()
Expand Down
17 changes: 3 additions & 14 deletions packages/uni-app-uts/src/plugins/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ import {
normalizeNodeModules,
normalizePath,
parseUTSComponent,
removePlugins,
transformTapToClick,
transformUTSComponent,
} from '@dcloudio/uni-cli-shared'
import { compileI18nJsonStr } from '@dcloudio/uni-i18n'
import type { Plugin, ResolvedConfig } from 'vite'
import type { ResolvedConfig } from 'vite'
import { ElementTypes, NodeTypes } from '@vue/compiler-core'

export function createUniOptions(
Expand Down Expand Up @@ -127,19 +128,7 @@ const REMOVED_PLUGINS = [
]

export function configResolved(config: ResolvedConfig, isAndroidX = false) {
const plugins = config.plugins as Plugin[]
const len = plugins.length
const removedPlugins = REMOVED_PLUGINS.slice(0)
if (isAndroidX) {
removedPlugins.push('vite:css')
removedPlugins.push('vite:css-post')
}
for (let i = len - 1; i >= 0; i--) {
const plugin = plugins[i]
if (removedPlugins.includes(plugin.name)) {
plugins.splice(i, 1)
}
}
removePlugins(REMOVED_PLUGINS.slice(0), config)
// console.log(plugins.map((p) => p.name))
// 强制不inline
config.build.assetsInlineLimit = 0
Expand Down

0 comments on commit d1bb504

Please sign in to comment.