Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .changeset/funky-keys-greet.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
"weapp-tailwindcss": patch
---

优化 Generic Vite Web 非 watch 生产构建,跳过未被消费的 source candidate 扫描与模块级跟踪,同时保留开发、watch、跨框架及 CSS 来源追踪链路;避免 weapp-vite 跨构建阶段重复合成独立分包样式
优化 Generic Vite Web 非 watch 生产构建,跳过未被消费的 source candidate 扫描与模块级跟踪,同时保留开发、watch、跨框架及 CSS 来源追踪链路;升级 weapp-vite 6.22 后迁移独立分包样式构建并保留单次生成回归
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { isAnonymousConfiguredSubpackageCssOutputReplay } from './css-source-plan'
import { scheduleViteCssTransform } from './transform-scheduling'

export async function processViteCssBundleEntry(options: any) {
Expand Down Expand Up @@ -194,11 +193,8 @@ export async function processViteCssBundleEntry(options: any) {
debug('css skip raw source style asset: %s -> %s', file, outputFile)
return
}
const viteProcessedCssRecord = getViteProcessedCssAssetResult?.(file)
const hasViteProcessedCssRecord = viteProcessedCssRecord != null
const hasViteProcessedCssAssetMarker = isViteProcessedCssAsset?.(originalSource, file) === true
let rawSourceAlreadyGenerated = hasViteProcessedCssAssetMarker
const viteProcessedCssAsset = rawSourceAlreadyGenerated || hasViteProcessedCssRecord
const hasViteProcessedCssRecord = getViteProcessedCssAssetResult?.(file) != null
const viteProcessedCssAsset = isViteProcessedCssAsset?.(originalSource, file) === true || hasViteProcessedCssRecord
const cssAssetIdentity = resolveCssAssetIdentity?.(originalSource, file) ?? {
kind: viteProcessedCssAsset ? 'bundler-generated' : 'user',
}
Expand Down Expand Up @@ -273,19 +269,6 @@ export async function processViteCssBundleEntry(options: any) {
sourceRoot: opts.tailwindcssBasedir,
temporaryOutput: isTemporaryCssAssetFile(outputFile),
})
rawSourceAlreadyGenerated = rawSourceAlreadyGenerated || (
opts.appType === 'weapp-vite'
&& isAnonymousConfiguredSubpackageCssOutputReplay({
assetSourceFile,
configuredSourceFileKeys: configuredTailwindV4CssSourceFileKeysForScope,
file,
isSubpackageOutput: currentSubpackageRoots != null
&& isSubpackageOutputFile(file, currentSubpackageRoots),
normalizeConfiguredSourceFile: normalizeConfiguredTailwindV4CssEntryFileKey,
originalFileNames: originalSource.originalFileNames,
plan: cssSourcePlan,
})
)
outputFile = cssSourcePlan.outputFile
activeViteCssCacheFiles.add(normalizeViteCssCacheKey(outputFile))
let outputCssHandlerOptions = getCssHandlerOptions(outputFile)
Expand Down Expand Up @@ -469,7 +452,6 @@ export async function processViteCssBundleEntry(options: any) {
outputFile,
processViteCssCacheTask,
rawSource,
rawSourceAlreadyGenerated,
recordCssAssetResult,
recordViteProcessedCssAssetResult,
rememberedCssRuntimeSignature,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,6 @@ export interface ViteCssSourcePlan extends RememberedCssSourcePlan {
| 'unresolved'
}

export function isAnonymousConfiguredSubpackageCssOutputReplay(options: {
assetSourceFile: string
configuredSourceFileKeys: ReadonlySet<string>
file: string
isSubpackageOutput: boolean
normalizeConfiguredSourceFile: (file: string) => string
originalFileNames?: readonly string[] | undefined
plan: ViteCssSourcePlan
}) {
return options.isSubpackageOutput
&& (options.originalFileNames?.length ?? 0) === 0
&& normalizeOutputPathKey(options.assetSourceFile) === normalizeOutputPathKey(options.file)
&& options.plan.hasUsableTailwindSource
&& options.plan.sources.some(source =>
options.configuredSourceFileKeys.has(options.normalizeConfiguredSourceFile(source.sourceFile)),
)
}

function hasTailwindPluginDirective(source: string) {
return /@plugin\b/.test(source)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ export interface ExecuteViteCssTransformTaskOptions {
outputFile: string
previousCss?: string | undefined
rawSource: string
rawSourceAlreadyGenerated?: boolean | undefined
removeRootCoveredCssFromScopedAsset: (css: string) => string
runtime: Set<string>
runtimeState: TailwindV4GenerationCoreInput['runtimeState']
Expand All @@ -54,7 +53,6 @@ export interface ExecuteViteCssTransformTaskOptions {

function resolveGeneratorUserRawSource(options: ExecuteViteCssTransformTaskOptions) {
const bundleUserRawSource = options.vitePipelineCssAsset
&& options.rawSourceAlreadyGenerated !== true
&& !hasBundlerGeneratedCssMarker(options.rawSource)
&& normalizeCssSourceForCompare(options.rawSource)
!== normalizeCssSourceForCompare(options.generatorRawSource)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ export function scheduleViteCssTransform(options: any) {
outputFile,
processViteCssCacheTask,
rawSource,
rawSourceAlreadyGenerated,
recordCssAssetResult,
recordViteProcessedCssAssetResult,
rememberedCssRuntimeSignature,
Expand Down Expand Up @@ -93,7 +92,6 @@ export function scheduleViteCssTransform(options: any) {
outputFile,
previousCss,
rawSource,
rawSourceAlreadyGenerated,
removeRootCoveredCssFromScopedAsset,
runtime: scopedGeneratorRuntime,
runtimeState,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,20 +142,4 @@ describe('vite css transform task', () => {
userRawSource: '.layer {}\nmini:user:.user {}',
}))
})

it('does not restore a prior generated bundle result as user css', async () => {
const generateCss = vi.fn(async () => undefined)
await executeViteCssTransformTask(createOptions({
generateCss,
generatorRawSource: '@import "tailwindcss";',
generatorUserLayerRawSource: '.layer {}',
rawSource: '.already-generated {}',
rawSourceAlreadyGenerated: true,
vitePipelineCssAsset: true,
}))

expect(generateCss).toHaveBeenCalledWith(expect.objectContaining({
userRawSource: '.layer {}',
}))
})
})
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { OutputAsset } from 'rollup'
import { describe, expect, it, vi } from 'vitest'
import { resolveViteCssCompositionPlan } from '@/bundlers/vite/generate-bundle/css-composition-plan'
import { isAnonymousConfiguredSubpackageCssOutputReplay, resolveViteCssSourcePlan } from '@/bundlers/vite/generate-bundle/css-source-plan'
import { resolveViteCssSourcePlan } from '@/bundlers/vite/generate-bundle/css-source-plan'
import { resolveRememberedCssSourcePlan } from '@/bundlers/vite/generate-bundle/remembered-css-plan'

function createAsset(fileName: string, source = ''): OutputAsset {
Expand Down Expand Up @@ -215,44 +215,6 @@ describe('vite css source plan', () => {
expect(plan.usedConfiguredSourceFiles).toEqual([sourceFile])
})

it('identifies anonymous configured output replays without classifying source-owned assets', () => {
const sourceFile = '/repo/src/sub-independent/pages/index.css'
const plan = {
forceNonMainChunk: false,
hasUsableTailwindSource: true,
outputFile: 'sub-independent/pages/index.wxss',
resolution: 'configured' as const,
resolvedFromTemporarySource: false,
sources: [{
outputFile: 'sub-independent/pages/index.wxss',
rawSource: '@import "tailwindcss";',
sourceFile,
}],
usedConfiguredSourceFiles: [sourceFile],
}
const options = {
assetSourceFile: 'sub-independent/pages/index.wxss',
configuredSourceFileKeys: new Set([sourceFile]),
file: 'sub-independent/pages/index.wxss',
isSubpackageOutput: true,
normalizeConfiguredSourceFile: (file: string) => file,
originalFileNames: [] as string[],
plan,
}

expect(isAnonymousConfiguredSubpackageCssOutputReplay(options)).toBe(true)
expect(isAnonymousConfiguredSubpackageCssOutputReplay({
...options,
assetSourceFile: sourceFile,
originalFileNames: [sourceFile],
})).toBe(false)
expect(isAnonymousConfiguredSubpackageCssOutputReplay({
...options,
file: 'app.wxss',
isSubpackageOutput: false,
})).toBe(false)
})

it('resolves a source style from the compilation snapshot', async () => {
const sourceFile = '/repo/src/pages/index/index.scss'
const plan = await resolveViteCssSourcePlan(createCssSourceOptions({
Expand Down
Loading
Loading