Skip to content

withPlugins

withPlugins allows to extend hooks with custom parameters. Useful for advanced use-cases.

my-integration/index.ts
1
import { defineIntegration, withPlugins } from "astro-integration-kit";
2
import { hasVitePluginPlugin } from "astro-integration-kit/plugins";
3
4
export default defineIntegration({
5
name: "my-integration",
6
setup({ name }) {
7
return withPlugins({
8
name,
9
plugins: [hasVitePluginPlugin],
10
hooks: {
11
"astro:config:setup": ({ hasVitePlugin }) => {}
12
}
13
})
14
}
15
})

Defining extra integration fields

Any extra property (not name, plugins or hooks) passed to withPlugins are returned unchanged.

You can use this to define fields you might want to access from outside your integration while having access to it’s internal state.

my-integration.ts
1
import { defineIntegration, withPlugins } from "astro-integration-kit";
2
3
export default defineIntegration({
4
// ...
5
setup() {
6
let counter = 0;
7
return withPlugins({
8
hooks: {
9
"astro:config:setup": ({ logger }) => {
10
logger.info(`Counter: ${counter++}`);
11
},
12
},
13
api: {
14
get counter() {
15
return counter;
16
},
17
increment() {
18
counter++;
19
},
20
},
21
});
22
},
23
});