Move option out of experimental

This commit is contained in:
Aaron
2024-07-24 13:39:30 -05:00
parent 7eb0a36245
commit d64af5d4f0
4 changed files with 27 additions and 24 deletions
@@ -147,12 +147,8 @@ export async function resolveConfig(
{},
);
const experimental = defu(mergedConfig.experimental, {
extensionApi: 'webextension-polyfill' as const,
entrypointImporter: 'jiti' as const,
});
if (experimental.extensionApi === 'chrome') {
const extensionApi = mergedConfig.extensionApi ?? 'webextension-polyfill';
if (extensionApi === 'chrome') {
await ensureDependencyInstalled('@types/chrome', {
dev: true,
});
@@ -167,7 +163,13 @@ export async function resolveConfig(
filterEntrypoints,
env,
fsCache: createFsCache(wxtDir),
imports: await getUnimportOptions(wxtDir, srcDir, logger, mergedConfig),
imports: await getUnimportOptions(
wxtDir,
srcDir,
logger,
extensionApi,
mergedConfig,
),
logger,
manifest: await resolveManifestConfig(env, mergedConfig.manifest),
manifestVersion,
@@ -186,7 +188,10 @@ export async function resolveConfig(
analysis: resolveAnalysisConfig(root, mergedConfig),
userConfigMetadata: userConfigMetadata ?? {},
alias,
experimental,
extensionApi,
experimental: defu(mergedConfig.experimental, {
entrypointImporter: 'jiti' as const,
}),
dev: {
server: devServerConfig,
reloadCommand,
@@ -315,6 +320,7 @@ async function getUnimportOptions(
wxtDir: string,
srcDir: string,
logger: Logger,
extensionApi: ResolvedConfig['extensionApi'],
config: InlineConfig,
): Promise<WxtResolvedUnimportOptions | false> {
if (config.imports === false) return false;
@@ -335,9 +341,7 @@ async function getUnimportOptions(
},
{
package:
config.experimental?.extensionApi === 'chrome'
? 'wxt/browser/chrome'
: 'wxt/browser',
extensionApi === 'chrome' ? 'wxt/browser/chrome' : 'wxt/browser',
},
{ package: 'wxt/sandbox' },
{ package: 'wxt/storage' },
@@ -296,8 +296,8 @@ export const fakeResolvedConfig = fakeObjectCreator<ResolvedConfig>(() => {
transformManifest: () => {},
userConfigMetadata: {},
alias: {},
extensionApi: 'webextension-polyfill',
experimental: {
extensionApi: 'webextension-polyfill',
entrypointImporter: 'jiti',
},
dev: {
+10 -8
View File
@@ -292,17 +292,19 @@ export interface InlineConfig {
* }
*/
alias?: Record<string, string>;
/**
* Which extension API to use.
*
* - `"webextension-polyfill"`: Use `browser` and types from [`webextension-polyfill`](https://www.npmjs.com/package/webextension-polyfill)
* - `"chrome"` (experimental): Use the vanilla `browser`/`chrome` globals provided by the browser without any polyfills. Types provided by [`@types/chrome`](https://www.npmjs.com/package/@types/chrome), make sure to install the package or types won't work.
*
* @default "webextension-polyfill"
*/
extensionApi?: 'webextension-polyfill' | 'chrome';
/**
* Experimental settings - use with caution.
*/
experimental?: {
/**
* Which extension API to use. To switch to `"chrome"`, make sure to
* install the `@types/chrome` package.
*
* @default "webextension-polyfill"
*/
extensionApi?: 'webextension-polyfill' | 'chrome';
/**
* Method used to import entrypoint files during the build process to extract their options.
*
@@ -1189,8 +1191,8 @@ export interface ResolvedConfig {
* Import aliases to absolute paths.
*/
alias: Record<string, string>;
extensionApi: 'webextension-polyfill' | 'chrome';
experimental: {
extensionApi: 'webextension-polyfill' | 'chrome';
entrypointImporter: 'jiti' | 'vite-runtime' | 'vite-node';
};
dev: {
+1 -4
View File
@@ -380,9 +380,6 @@ importers:
specifier: ^18.3.1
version: 18.3.1(react@18.3.1)
devDependencies:
'@types/chrome':
specifier: ^0.0.268
version: 0.0.268
'@types/react':
specifier: ^18.3.3
version: 18.3.3
@@ -7266,7 +7263,7 @@ packages:
peerDependencies:
vite: ^4.0.0 || ^5.0.0
dependencies:
vite: 5.3.4(sass@1.77.8)
vite: 5.3.4(@types/node@20.14.11)
dev: true
/vitest@2.0.3: