0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2024-12-16 21:46:22 -05:00

Add options to partytown integration (#3380)

* Add options to partytown integration

* Update doc
This commit is contained in:
Mark Leung 2022-05-16 19:32:05 +01:00 committed by GitHub
parent 77beab072f
commit 31b0bc87a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 2 deletions

View file

@ -0,0 +1,5 @@
---
'@astrojs/partytown': patch
---
Add config options for integration

View file

@ -59,6 +59,38 @@ Partytown should be ready-to-use with zero config. If you have an existing 3rd p
If you open the "Network" tab from [your browser's dev tools](https://developer.chrome.com/docs/devtools/open/), you should see the `partytown` proxy intercepting this request.
## Configuration
### config.debug
You can set debug mode using this integration's `config.debug` option. If `config.debug` is unset, it will fall back to `true` if the command is `dev`.
```js
// astro.config.mjs
export default {
integrations: [partytown({
// Example: Disable debug mode.
config: { debug: false },
})],
}
```
### config.forward
Because were moving third-party scripts to a web worker, the main thread needs to know which variables to patch on window, and when these services are called, the data is correctly forwarded to the web worker. You can to set it on the `config.forward` option.
```js
// astro.config.mjs
export default {
integrations: [partytown({
// Example: Add dataLayer.push as a forwarding-event.
config: { forward: ["dataLayer.push"] },
})],
}
```
## Read more
[Head to the Partytown docs](https://partytown.builder.io/configuration) for configuration options and more usage examples. You can also check our [Astro Integration Documentation][astro-integration] for more on integrations.
[astro-integration]: https://docs.astro.build/en/guides/integrations-guide/

View file

@ -7,7 +7,14 @@ import { createRequire } from 'module';
import path from 'path';
const resolve = createRequire(import.meta.url).resolve;
export default function createPlugin(): AstroIntegration {
type PartytownOptions = {
config?: {
forward?: string[];
debug?: boolean;
}
} | undefined;
export default function createPlugin(options: PartytownOptions): AstroIntegration {
let config: AstroConfig;
let partytownSnippetHtml: string;
const partytownEntrypoint = resolve('@builder.io/partytown/package.json');
@ -16,7 +23,9 @@ export default function createPlugin(): AstroIntegration {
name: '@astrojs/partytown',
hooks: {
'astro:config:setup': ({ config: _config, command, injectScript }) => {
partytownSnippetHtml = partytownSnippet({ debug: command === 'dev' });
const forward = options?.config?.forward || []
const debug = options?.config?.debug || command === 'dev'
partytownSnippetHtml = partytownSnippet({ debug, forward });
injectScript('head-inline', partytownSnippetHtml);
},
'astro:config:done': ({ config: _config }) => {