Compare commits

...

7 Commits

Author SHA1 Message Date
GitHub Actions 8c834835c4 chore(release): v0.13.5 2024-01-08 20:10:48 +00:00
Aaron 9a2cc18f64 chore: Update bug report template 2024-01-08 13:50:20 -06:00
Aaron Klinker 8683bd4b77 docs: Add section about customizing other browser options during development 2024-01-08 13:42:50 -06:00
Aaron dca52864bb fix: Strip path from web_accessible_resources[0].matches (#332) 2024-01-08 13:17:31 -06:00
GitHub Actions 0c5643f648 chore(release): v0.13.4 2024-01-07 16:51:31 +00:00
Aaron Klinker b7cdf1597c fix: Disable minification during development
This closes #328
2024-01-07 10:48:25 -06:00
Aaron Klinker 2770974261 chore: Use const instead of let 2024-01-07 10:46:49 -06:00
7 changed files with 137 additions and 10 deletions
+14 -6
View File
@@ -12,14 +12,22 @@ A clear and concise description of what the bug is.
### To Reproduce
Upload a ZIP or share a link to a repo representing the minimal reproduction. **_If you don't upload a minimal reproduction, you bug report will be closed._**
Share minimal reproduction. Examples of a minimal reproduction:
Steps to reproduce the behavior:
- PR with a failing test case
- ZIP file containing a minimal WXT project (be sure to include your lockfile!!)
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
> **_⚠️ If you don't upload a minimal reproduction, your issue will be closed until a reproduction is added._**
>
> Why? https://antfu.me/posts/why-reproductions-are-required
Steps to reproduce the bug using the reproduction:
1. Install dependencies: `pnpm i`
2. Start dev mode: `pnpm dev`
3. Click this...
4. Do that...
5. Etc...
### Expected behavior
+28
View File
@@ -1,5 +1,33 @@
# Changelog
## v0.13.5
[compare changes](https://github.com/wxt-dev/wxt/compare/v0.13.4...v0.13.5)
### 🩹 Fixes
- Strip path from `web_accessible_resources[0].matches` ([#332](https://github.com/wxt-dev/wxt/pull/332))
### 📖 Documentation
- Add section about customizing other browser options during development ([8683bd4](https://github.com/wxt-dev/wxt/commit/8683bd4))
### 🏡 Chore
- Update bug report template ([9a2cc18](https://github.com/wxt-dev/wxt/commit/9a2cc18))
## v0.13.4
[compare changes](https://github.com/wxt-dev/wxt/compare/v0.13.3...v0.13.4)
### 🩹 Fixes
- Disable minification during development ([b7cdf15](https://github.com/wxt-dev/wxt/commit/b7cdf15))
### 🏡 Chore
- Use `const` instead of `let` ([2770974](https://github.com/wxt-dev/wxt/commit/2770974))
## v0.13.3
[compare changes](https://github.com/wxt-dev/wxt/compare/v0.13.2...v0.13.3)
+19
View File
@@ -39,6 +39,8 @@ export default defineRunnerConfig({
:::
### Browser Binaries
`web-ext`'s browser discovery is very limitted. By default, it only guesses at where Chrome and Firefox are installed. If you've customized your install locations, you may need to tell `web-ext` where the binaries/executables are located using the [`binaries` option](/api/wxt/interfaces/ExtensionRunnerConfig#binaries). For other Chromium based browsers, like Edge or Opera, you'll need to explicitly list them in the `binaries` option as well, otherwise they will open in Chrome by default.
```ts
@@ -58,6 +60,23 @@ export default defineRunnerConfig({
When configuring browser binaries, it's helpful to put them in `~/web-ext.config.ts` instead of the project directory's `web-ext.config.ts` file. When placed in your home directory (`~/`), this config will be used by all WXT projects, so you only need to configure the binaries once.
:::
### Other options
You can customize other options as well, like startup URLs, profiles, or additional command line arguments:
```ts
// web-ext.config.ts
import { defineRunnerConfig } from 'wxt';
export default defineRunnerConfig({
startUrls: ['https://google.com', 'https://duckduckgo.com'],
chromiumProfile: '/path/to/profile/to/use',
chromiumArgs: ['--window-size=400x300'],
});
```
For a full list of options, see the [API Reference](/api/wxt/interfaces/ExtensionRunnerConfig).
## Reload the Extension
Normally, to manually reload an extension, you have to visit `chrome://extensions` and click the reload button for your extension.
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "wxt",
"type": "module",
"version": "0.13.3",
"version": "0.13.5",
"description": "Next gen framework for developing web extensions",
"engines": {
"node": ">=18",
+4
View File
@@ -40,6 +40,10 @@ export async function craeteViteBuilder(
config.build ??= {};
config.build.outDir = wxtConfig.outDir;
config.build.emptyOutDir = false;
// Disable minification for the dev command
if (config.build.minify == null && wxtConfig.command === 'serve') {
config.build.minify = false;
}
config.plugins ??= [];
config.plugins.push(
+54 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, it } from 'vitest';
import { generateManifest } from '../manifest';
import { generateManifest, stripPathFromMatchPattern } from '../manifest';
import {
fakeArray,
fakeBackgroundEntrypoint,
@@ -646,6 +646,47 @@ describe('Manifest Utils', () => {
'content-scripts/one.css',
]);
});
it('should strip the path off the match pattern so the pattern is valid for `web_accessible_resources`', async () => {
const cs: ContentScriptEntrypoint = {
type: 'content-script',
name: 'one',
inputPath: 'entrypoints/one.content.ts',
outputDir: contentScriptOutDir,
options: {
matches: ['*://play.google.com/books/*'],
cssInjectionMode: 'ui',
},
};
const styles: OutputAsset = {
type: 'asset',
fileName: 'content-scripts/one.css',
};
const entrypoints = [cs];
const buildOutput: Omit<BuildOutput, 'manifest'> = {
publicAssets: [],
steps: [{ entrypoints: cs, chunks: [styles] }],
};
const config = fakeInternalConfig({
outDir,
command: 'build',
manifestVersion: 3,
});
const actual = await generateManifest(
entrypoints,
buildOutput,
config,
);
expect(actual.web_accessible_resources).toEqual([
{
matches: ['*://play.google.com/*'],
resources: ['content-scripts/one.css'],
},
]);
});
});
});
@@ -909,4 +950,16 @@ describe('Manifest Utils', () => {
});
});
});
describe('stripPathFromMatchPattern', () => {
it.each([
['<all_urls>', '<all_urls>'],
['*://play.google.com/books/*', '*://play.google.com/*'],
['*://*/*', '*://*/*'],
['https://github.com/wxt-dev/*', 'https://github.com/*'],
])('should convert "%s" to "%s"', (input, expected) => {
const actual = stripPathFromMatchPattern(input);
expect(actual).toEqual(expected);
});
});
});
+17 -2
View File
@@ -65,7 +65,7 @@ export async function generateManifest(
'Extension version not found, defaulting to "0.0.0". Add a version to your `package.json` or `wxt.config.ts` file. For more details, see: https://wxt.dev/guide/manifest.html#version-and-version-name',
);
}
let version = config.manifest.version ?? simplifyVersion(versionName);
const version = config.manifest.version ?? simplifyVersion(versionName);
const baseManifest: Manifest.WebExtensionManifest = {
manifest_version: config.manifestVersion,
@@ -503,7 +503,10 @@ export function getContentScriptCssWebAccessibleResources(
} else {
resources.push({
resources: [cssFile],
matches: script.options.matches,
matches: resolvePerBrowserOption(
script.options.matches,
config.browser,
).map((matchPattern) => stripPathFromMatchPattern(matchPattern)),
});
}
});
@@ -547,3 +550,15 @@ function addHostPermission(
if (manifest.host_permissions.includes(hostPermission)) return;
manifest.host_permissions.push(hostPermission);
}
/**
* - "<all_urls>" &rarr; "<all_urls>"
* - "*://play.google.com/books/*" &rarr; "*://play.google.com/*"
*/
export function stripPathFromMatchPattern(pattern: string) {
const protocolSepIndex = pattern.indexOf('://');
if (protocolSepIndex === -1) return pattern;
const startOfPath = pattern.indexOf('/', protocolSepIndex + 3);
return pattern.substring(0, startOfPath) + '/*';
}