Skip to content

Commit 5778365

Browse files
authored
revert: "fix(css): spread lightningcss options (#14024)" (#14209)
1 parent 627159d commit 5778365

File tree

7 files changed

+57
-15
lines changed

7 files changed

+57
-15
lines changed

packages/vite/api-extractor.json

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
"mainEntryPointFilePath": "./temp/node/index.d.ts",
77

8+
"bundledPackages": ["lightningcss"],
9+
810
"dtsRollup": {
911
"enabled": true,
1012
"untrimmedFilePath": "",

packages/vite/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
"build-types": "run-s build-types-temp build-types-pre-patch build-types-roll build-types-post-patch build-types-check",
5858
"build-types-temp": "tsc --emitDeclarationOnly --outDir temp/node -p src/node",
5959
"build-types-pre-patch": "tsx scripts/prePatchTypes.ts",
60-
"build-types-roll": "api-extractor run && rimraf temp",
60+
"build-types-roll": "tsx scripts/api-extractor.ts run && rimraf temp",
6161
"build-types-post-patch": "tsx scripts/postPatchTypes.ts",
6262
"build-types-check": "tsx scripts/checkBuiltTypes.ts && tsc --project tsconfig.check.json",
6363
"typecheck": "tsc --noEmit",
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { Extractor, ExtractorConfig } from '@microsoft/api-extractor'
2+
3+
const result = Extractor.invoke(
4+
ExtractorConfig.loadFileAndPrepare('./api-extractor.json'),
5+
{
6+
messageCallback: (message) => {
7+
const ignore = () => {
8+
// @ts-expect-error TS requires to use the const enum, which is not available as the named export in tsx
9+
message.logLevel = 'none'
10+
}
11+
if (message.sourceFilePath?.includes('lightningcss')) {
12+
ignore()
13+
}
14+
if (message.messageId === 'ae-forgotten-export') {
15+
if (message.sourceFilePath?.endsWith('/src/types/lightningcss.d.ts')) {
16+
// We only expose LightningCSS types via prefixed types to avoid
17+
// having confusing name like "Targets" in Vite types
18+
ignore()
19+
}
20+
}
21+
},
22+
},
23+
)
24+
25+
if (!result.succeeded) process.exit(1)

packages/vite/scripts/checkBuiltTypes.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ const distDir = resolve(dir, '../dist')
1717
const pkgJson = JSON.parse(
1818
readFileSync(resolve(dir, '../package.json'), 'utf-8'),
1919
)
20-
const deps = new Set(
21-
Object.keys(Object.assign(pkgJson.dependencies, pkgJson.peerDependencies)),
22-
)
20+
const deps = new Set(Object.keys(pkgJson.dependencies))
2321

2422
type SpecifierError = {
2523
loc: SourceLocation | null | undefined

packages/vite/src/node/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ export type {
7474
export type {
7575
CSSOptions,
7676
CSSModulesOptions,
77-
LightningCSSOptions,
7877
PreprocessCSSResult,
7978
ResolvedCSSOptions,
8079
} from './plugins/css'
@@ -143,3 +142,4 @@ export type { Terser } from 'dep-types/terser'
143142
export type { RollupCommonJSOptions } from 'dep-types/commonjs'
144143
export type { RollupDynamicImportVarsOptions } from 'dep-types/dynamicImportVars'
145144
export type { Matcher, AnymatchPattern, AnymatchFn } from 'dep-types/anymatch'
145+
export type { LightningCSSOptions } from 'dep-types/lightningcss'

packages/vite/src/node/plugins/css.ts

+4-10
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ import type Sass from 'sass'
2020
import type Stylus from 'stylus'
2121
import type Less from 'less'
2222
import type { Alias } from 'dep-types/alias'
23+
import type { LightningCSSOptions } from 'dep-types/lightningcss'
2324
import type { TransformOptions } from 'esbuild'
2425
import { formatMessages, transform } from 'esbuild'
2526
import type { RawSourceMap } from '@ampproject/remapping'
26-
import type { BundleAsyncOptions, CustomAtRules } from 'lightningcss'
2727
import { getCodeWithSourcemap, injectSourcesContent } from '../server/sourcemap'
2828
import type { ModuleNode } from '../server/moduleGraph'
2929
import type { ResolveFn, ViteDevServer } from '../'
@@ -139,12 +139,6 @@ export type ResolvedCSSOptions = Omit<CSSOptions, 'lightningcss'> & {
139139
}
140140
}
141141

142-
// remove options set by Vite
143-
export type LightningCSSOptions = Omit<
144-
BundleAsyncOptions<CustomAtRules>,
145-
'filename' | 'resolver' | 'minify' | 'sourceMap' | 'analyzeDependencies'
146-
>
147-
148142
export function resolveCSSOptions(
149143
options: CSSOptions | undefined,
150144
): ResolvedCSSOptions | undefined {
@@ -2185,15 +2179,13 @@ async function compileLightningCSS(
21852179
? (await importLightningCSS()).transformStyleAttribute({
21862180
filename,
21872181
code: Buffer.from(src),
2188-
minify: config.isProduction && !!config.build.cssMinify,
21892182
targets: config.css?.lightningcss?.targets,
2183+
minify: config.isProduction && !!config.build.cssMinify,
21902184
analyzeDependencies: true,
2191-
visitor: config.css?.lightningcss?.visitor,
21922185
})
21932186
: await (
21942187
await importLightningCSS()
21952188
).bundleAsync({
2196-
...config.css?.lightningcss,
21972189
filename,
21982190
resolver: {
21992191
read(filePath) {
@@ -2224,12 +2216,14 @@ async function compileLightningCSS(
22242216
return id
22252217
},
22262218
},
2219+
targets: config.css?.lightningcss?.targets,
22272220
minify: config.isProduction && !!config.build.cssMinify,
22282221
sourceMap: config.css?.devSourcemap,
22292222
analyzeDependencies: true,
22302223
cssModules: cssModuleRE.test(id)
22312224
? config.css?.lightningcss?.cssModules ?? true
22322225
: undefined,
2226+
drafts: config.css?.lightningcss?.drafts,
22332227
})
22342228

22352229
let css = res.code.toString()
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import type {
2+
CSSModulesConfig,
3+
Drafts,
4+
Features,
5+
NonStandard,
6+
PseudoClasses,
7+
Targets,
8+
} from 'lightningcss'
9+
10+
/**
11+
* Options are spread, so you can also use options that are not typed here like
12+
* visitor (not exposed because it would impact too much the bundle size)
13+
*/
14+
export type LightningCSSOptions = {
15+
targets?: Targets
16+
include?: Features
17+
exclude?: Features
18+
drafts?: Drafts
19+
nonStandard?: NonStandard
20+
pseudoClasses?: PseudoClasses
21+
unusedSymbols?: string[]
22+
cssModules?: CSSModulesConfig
23+
}

0 commit comments

Comments
 (0)