This commit is contained in:
Aaron
2024-07-24 13:31:09 -05:00
parent 14bae66bba
commit 7eb0a36245
3 changed files with 29 additions and 13 deletions
@@ -14,18 +14,17 @@ export function extensionApiMock(config: ResolvedConfig): vite.PluginOption {
return {
name: 'wxt:extension-api-mock',
config() {
const mockBrowser = path.resolve(
const replacement = path.resolve(
config.wxtModuleDir,
'dist/virtual/mock-browser',
);
return {
resolve: {
alias: {
'webextension-polyfill': mockBrowser,
'wxt/browser': mockBrowser,
'wxt/browser/webextension-polyfill': mockBrowser,
'wxt/browser/chrome': mockBrowser,
},
alias: [
{ find: 'webextension-polyfill', replacement },
// wxt/browser, wxt/browser/...
{ find: /^wxt\/browser.*/, replacement },
],
},
ssr: {
// Inline all WXT modules so vite processes them so the aliases can
@@ -25,6 +25,7 @@ import { normalizePath } from '../paths';
import glob from 'fast-glob';
import { builtinModules } from '../../../builtin-modules';
import { getEslintVersion } from '../eslint';
import { ensureDependencyInstalled } from 'nypm';
/**
* Given an inline config, discover the config file if necessary, merge the results, resolve any
@@ -146,6 +147,17 @@ export async function resolveConfig(
{},
);
const experimental = defu(mergedConfig.experimental, {
extensionApi: 'webextension-polyfill' as const,
entrypointImporter: 'jiti' as const,
});
if (experimental.extensionApi === 'chrome') {
await ensureDependencyInstalled('@types/chrome', {
dev: true,
});
}
return {
browser,
command,
@@ -174,10 +186,7 @@ export async function resolveConfig(
analysis: resolveAnalysisConfig(root, mergedConfig),
userConfigMetadata: userConfigMetadata ?? {},
alias,
experimental: defu(mergedConfig.experimental, {
extensionApi: 'webextension-polyfill' as const,
entrypointImporter: 'jiti' as const,
}),
experimental,
dev: {
server: devServerConfig,
reloadCommand,
@@ -324,7 +333,12 @@ async function getUnimportOptions(
// ignored.
ignore: ['options'],
},
{ package: 'wxt/browser' },
{
package:
config.experimental?.extensionApi === 'chrome'
? 'wxt/browser/chrome'
: 'wxt/browser',
},
{ package: 'wxt/sandbox' },
{ package: 'wxt/storage' },
],
+4 -1
View File
@@ -380,6 +380,9 @@ 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
@@ -7263,7 +7266,7 @@ packages:
peerDependencies:
vite: ^4.0.0 || ^5.0.0
dependencies:
vite: 5.3.4(@types/node@20.14.11)
vite: 5.3.4(sass@1.77.8)
dev: true
/vitest@2.0.3: