Repo

Scripts Plugin

This plugin re-runs any scripts in head/body on swups contentReplaced event. This can be helpful when the scripts included in the page are outside of the control of the developer and needs to be re-evaluated after content replace.

Plugin will ignore any script tags with attribute data-swup-ignore-script. It is also necessary to add this attribute to any scripts loading and enabling swup, to prevent creating of multiple instances of swup and prevent unnecessary swup class evaluation.

Warning: This plugin is only intended as last resort for projects with little control over what scripts are included. Re-running your scripts without destroying remains of previous run can lead to memory leaks and breaking of the page. Use at own risk.

Installation

This plugin can be installed with npm

npm install @swup/scripts-plugin

and included with import

import SwupScriptsPlugin from '@swup/scripts-plugin';

or included from the dist folder

<script src="./dist/SwupScriptsPlugin.js"></script>

Usage

To run this plugin, include an instance in the swup options.

const swup = new Swup({
  plugins: [new SwupScriptsPlugin()]
});

Options

head and body

Plugin has two boolean options - head and body. Both are by default set to true. Options can be used to disable re-running of scripts globally in head or body of the page.

new SwupScriptsPlugin({
  head: true,
  body: true
});

optin

In some situations, you might not have control over inserted scripts into the page (through GTM for example). In that case, switching optin option to true will only reload the scripts explicitly marked with data-swup-reload-script attribute.

new SwupScriptsPlugin({
  optin: false
});