diff --git a/packages/vite/api-extractor.json b/packages/vite/api-extractor.json index 642cef99fecd59..0b5b4178c2bd90 100644 --- a/packages/vite/api-extractor.json +++ b/packages/vite/api-extractor.json @@ -5,8 +5,6 @@ "mainEntryPointFilePath": "./temp/node/index.d.ts", - "bundledPackages": ["lightningcss"], - "dtsRollup": { "enabled": true, "untrimmedFilePath": "", diff --git a/packages/vite/package.json b/packages/vite/package.json index 824305fc2a4841..1556478f2ab56b 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -57,7 +57,7 @@ "build-types": "run-s build-types-temp build-types-pre-patch build-types-roll build-types-post-patch build-types-check", "build-types-temp": "tsc --emitDeclarationOnly --outDir temp/node -p src/node", "build-types-pre-patch": "tsx scripts/prePatchTypes.ts", - "build-types-roll": "tsx scripts/api-extractor.ts run && rimraf temp", + "build-types-roll": "api-extractor run && rimraf temp", "build-types-post-patch": "tsx scripts/postPatchTypes.ts", "build-types-check": "tsx scripts/checkBuiltTypes.ts && tsc --project tsconfig.check.json", "typecheck": "tsc --noEmit", diff --git a/packages/vite/scripts/api-extractor.ts b/packages/vite/scripts/api-extractor.ts deleted file mode 100644 index 1154830ffa8cd6..00000000000000 --- a/packages/vite/scripts/api-extractor.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Extractor, ExtractorConfig } from '@microsoft/api-extractor' - -const result = Extractor.invoke( - ExtractorConfig.loadFileAndPrepare('./api-extractor.json'), - { - messageCallback: (message) => { - const ignore = () => { - // @ts-expect-error TS requires to use the const enum, which is not available as the named export in tsx - message.logLevel = 'none' - } - if (message.sourceFilePath?.includes('lightningcss')) { - ignore() - } - if (message.messageId === 'ae-forgotten-export') { - if (message.sourceFilePath?.endsWith('/src/types/lightningcss.d.ts')) { - // We only expose LightningCSS types via prefixed types to avoid - // having confusing name like "Targets" in Vite types - ignore() - } - } - }, - }, -) - -if (!result.succeeded) process.exit(1) diff --git a/packages/vite/scripts/checkBuiltTypes.ts b/packages/vite/scripts/checkBuiltTypes.ts index 5601a1e84fb9cd..43f8a914b63c4d 100644 --- a/packages/vite/scripts/checkBuiltTypes.ts +++ b/packages/vite/scripts/checkBuiltTypes.ts @@ -17,7 +17,9 @@ const distDir = resolve(dir, '../dist') const pkgJson = JSON.parse( readFileSync(resolve(dir, '../package.json'), 'utf-8'), ) -const deps = new Set(Object.keys(pkgJson.dependencies)) +const deps = new Set( + Object.keys(Object.assign(pkgJson.dependencies, pkgJson.peerDependencies)), +) type SpecifierError = { loc: SourceLocation | null | undefined diff --git a/packages/vite/src/node/index.ts b/packages/vite/src/node/index.ts index ffa1d4ecd83a49..942c70b6d2dc87 100644 --- a/packages/vite/src/node/index.ts +++ b/packages/vite/src/node/index.ts @@ -75,6 +75,7 @@ export type { export type { CSSOptions, CSSModulesOptions, + LightningCSSOptions, PreprocessCSSResult, ResolvedCSSOptions, } from './plugins/css' @@ -144,4 +145,3 @@ export type { Terser } from 'dep-types/terser' export type { RollupCommonJSOptions } from 'dep-types/commonjs' export type { RollupDynamicImportVarsOptions } from 'dep-types/dynamicImportVars' export type { Matcher, AnymatchPattern, AnymatchFn } from 'dep-types/anymatch' -export type { LightningCSSOptions } from 'dep-types/lightningcss' diff --git a/packages/vite/src/node/plugins/css.ts b/packages/vite/src/node/plugins/css.ts index 9aa3abf5c2da68..1fdaf97e7f57c4 100644 --- a/packages/vite/src/node/plugins/css.ts +++ b/packages/vite/src/node/plugins/css.ts @@ -20,10 +20,10 @@ import type Sass from 'sass' import type Stylus from 'stylus' import type Less from 'less' import type { Alias } from 'dep-types/alias' -import type { LightningCSSOptions } from 'dep-types/lightningcss' import type { TransformOptions } from 'esbuild' import { formatMessages, transform } from 'esbuild' import type { RawSourceMap } from '@ampproject/remapping' +import type { BundleAsyncOptions, CustomAtRules } from 'lightningcss' import { getCodeWithSourcemap, injectSourcesContent } from '../server/sourcemap' import type { ModuleNode } from '../server/moduleGraph' import type { ResolveFn, ViteDevServer } from '../' @@ -139,6 +139,12 @@ export type ResolvedCSSOptions = Omit & { } } +// remove options set by Vite +export type LightningCSSOptions = Omit< + BundleAsyncOptions, + 'filename' | 'resolver' | 'minify' | 'sourceMap' | 'analyzeDependencies' +> + export function resolveCSSOptions( options: CSSOptions | undefined, ): ResolvedCSSOptions | undefined { @@ -2167,13 +2173,15 @@ async function compileLightningCSS( ? (await importLightningCSS()).transformStyleAttribute({ filename, code: Buffer.from(src), - targets: config.css?.lightningcss?.targets, minify: config.isProduction && !!config.build.cssMinify, + targets: config.css?.lightningcss?.targets, analyzeDependencies: true, + visitor: config.css?.lightningcss?.visitor, }) : await ( await importLightningCSS() ).bundleAsync({ + ...config.css?.lightningcss, filename, resolver: { read(filePath) { @@ -2204,14 +2212,12 @@ async function compileLightningCSS( return id }, }, - targets: config.css?.lightningcss?.targets, minify: config.isProduction && !!config.build.cssMinify, sourceMap: config.css?.devSourcemap, analyzeDependencies: true, cssModules: cssModuleRE.test(id) ? config.css?.lightningcss?.cssModules ?? true : undefined, - drafts: config.css?.lightningcss?.drafts, }) let css = res.code.toString() diff --git a/packages/vite/src/types/lightningcss.d.ts b/packages/vite/src/types/lightningcss.d.ts deleted file mode 100644 index 98367f381283a2..00000000000000 --- a/packages/vite/src/types/lightningcss.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { - CSSModulesConfig, - Drafts, - Features, - NonStandard, - PseudoClasses, - Targets, -} from 'lightningcss' - -/** - * Options are spread, so you can also use options that are not typed here like - * visitor (not exposed because it would impact too much the bundle size) - */ -export type LightningCSSOptions = { - targets?: Targets - include?: Features - exclude?: Features - drafts?: Drafts - nonStandard?: NonStandard - pseudoClasses?: PseudoClasses - unusedSymbols?: string[] - cssModules?: CSSModulesConfig -}