diff --git a/app/package.json b/app/package.json
index ae5c2b5a21..ea26b1fc45 100644
--- a/app/package.json
+++ b/app/package.json
@@ -24,6 +24,7 @@
"govuk_frontend_toolkit": "^9.0.1",
"govuk_template_jinja": "^0.26.0",
"govuk-elements-sass": "3.1.3",
+ "govuk-frontend": "*",
"gulp": "^4.0.2",
"gulp-cli": "^2.3.0",
"highlight.js": "^11.7.0",
diff --git a/app/src/javascripts/main.mjs b/app/src/javascripts/main.mjs
new file mode 100644
index 0000000000..ec6f1eb6db
--- /dev/null
+++ b/app/src/javascripts/main.mjs
@@ -0,0 +1,3 @@
+import { initAll } from 'govuk-frontend'
+
+initAll()
diff --git a/app/src/stylesheets/app-ie8.scss b/app/src/stylesheets/app-ie8.scss
index b58b049a27..c165db8865 100644
--- a/app/src/stylesheets/app-ie8.scss
+++ b/app/src/stylesheets/app-ie8.scss
@@ -1,3 +1,3 @@
-@import "../../../package/src/govuk/all-ie8";
+@import "govuk-frontend/src/govuk/all-ie8";
@import "partials/app";
@import "partials/banner";
diff --git a/app/src/stylesheets/app.scss b/app/src/stylesheets/app.scss
index 1203c6b050..4e0361cfd2 100644
--- a/app/src/stylesheets/app.scss
+++ b/app/src/stylesheets/app.scss
@@ -1,7 +1,7 @@
$govuk-show-breakpoints: true;
$govuk-new-link-styles: true;
-@import "../../../package/src/govuk/all";
+@import "govuk-frontend/src/govuk/all";
@import "partials/app";
@import "partials/code";
@import "partials/banner";
diff --git a/app/src/stylesheets/full-page-examples/campaign-page.scss b/app/src/stylesheets/full-page-examples/campaign-page.scss
index 79c69cdaf1..fd24e7a34e 100644
--- a/app/src/stylesheets/full-page-examples/campaign-page.scss
+++ b/app/src/stylesheets/full-page-examples/campaign-page.scss
@@ -1,6 +1,6 @@
-@import "../../../../package/src/govuk/base";
+@import "govuk-frontend/src/govuk/base";
$govuk-new-link-styles: true;
-@import "../../../../package/src/govuk/core/all";
+@import "govuk-frontend/src/govuk/core/all";
.app-header--campaign {
padding-bottom: govuk-spacing(2);
diff --git a/app/src/stylesheets/full-page-examples/search.scss b/app/src/stylesheets/full-page-examples/search.scss
index 8758f018b2..a34aae94ac 100644
--- a/app/src/stylesheets/full-page-examples/search.scss
+++ b/app/src/stylesheets/full-page-examples/search.scss
@@ -1,6 +1,6 @@
-@import "../../../../package/src/govuk/base";
+@import "govuk-frontend/src/govuk/base";
$govuk-new-link-styles: true;
-@import "../../../../package/src/govuk/core/all";
+@import "govuk-frontend/src/govuk/core/all";
.app-document-list > li {
padding-top: govuk-spacing(4);
diff --git a/app/src/views/layouts/_generic.njk b/app/src/views/layouts/_generic.njk
index 8966d9b324..168f279321 100644
--- a/app/src/views/layouts/_generic.njk
+++ b/app/src/views/layouts/_generic.njk
@@ -42,6 +42,5 @@
{% include "partials/legacyJavaScript.njk" %}
{% endif %}
-
-
+
{% endblock %}
diff --git a/app/src/views/layouts/legacy.njk b/app/src/views/layouts/legacy.njk
index d458a8ba97..5c571ec75e 100644
--- a/app/src/views/layouts/legacy.njk
+++ b/app/src/views/layouts/legacy.njk
@@ -22,6 +22,5 @@
{% block body_end %}
{% include "partials/legacyJavaScript.njk" %}
-
-
+
{% endblock %}
diff --git a/app/tasks/scripts.mjs b/app/tasks/scripts.mjs
index 2b53adef4e..b533e9b208 100644
--- a/app/tasks/scripts.mjs
+++ b/app/tasks/scripts.mjs
@@ -11,8 +11,8 @@ import { npm, scripts, task } from '../../tasks/index.mjs'
*/
export const compile = gulp.series(
task.name('compile:js', () =>
- scripts.compile('all.mjs', {
- srcPath: join(paths.src, 'govuk'),
+ scripts.compile('main.mjs', {
+ srcPath: join(paths.app, 'src/javascripts'),
destPath: join(paths.app, 'dist/javascripts'),
filePath (file) {
diff --git a/package-lock.json b/package-lock.json
index ac80ae16af..1e86f69acb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -48,6 +48,7 @@
"postcss-unrgba": "^1.1.1",
"puppeteer": "^19.8.2",
"rollup": "0.59.4",
+ "rollup-plugin-node-resolve": "^4.2.4",
"rollup-plugin-replace": "^2.2.0",
"sass-embedded": "^1.60.0",
"sassdoc": "^2.7.4",
@@ -105,6 +106,7 @@
"govuk_frontend_toolkit": "^9.0.1",
"govuk_template_jinja": "^0.26.0",
"govuk-elements-sass": "3.1.3",
+ "govuk-frontend": "*",
"gulp": "^4.0.2",
"gulp-cli": "^2.3.0",
"highlight.js": "^11.7.0",
@@ -4355,6 +4357,14 @@
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
"dev": true
},
+ "node_modules/@types/resolve": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
+ "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/responselike": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
@@ -6388,6 +6398,17 @@
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
+ "node_modules/builtin-modules": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/builtins": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
@@ -13029,6 +13050,11 @@
"resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
"integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="
},
+ "node_modules/is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g=="
+ },
"node_modules/is-negated-glob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
@@ -20992,6 +21018,18 @@
"rollup": "bin/rollup"
}
},
+ "node_modules/rollup-plugin-node-resolve": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.4.tgz",
+ "integrity": "sha512-t/64I6l7fZ9BxqD3XlX4ZeO6+5RLKyfpwE2CiPNUKa+GocPlQhf/C208ou8y3AwtNsc6bjSk/8/6y/YAyxCIvw==",
+ "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve.",
+ "dependencies": {
+ "@types/resolve": "0.0.8",
+ "builtin-modules": "^3.1.0",
+ "is-module": "^1.0.0",
+ "resolve": "^1.10.0"
+ }
+ },
"node_modules/rollup-plugin-replace": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz",
@@ -28436,6 +28474,14 @@
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
"dev": true
},
+ "@types/resolve": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
+ "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/responselike": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
@@ -29980,6 +30026,11 @@
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
+ "builtin-modules": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw=="
+ },
"builtins": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz",
@@ -34026,6 +34077,7 @@
"govuk_frontend_toolkit": "^9.0.1",
"govuk_template_jinja": "^0.26.0",
"govuk-elements-sass": "3.1.3",
+ "govuk-frontend": "*",
"gulp": "^4.0.2",
"gulp-cli": "^2.3.0",
"highlight.js": "^11.7.0",
@@ -35204,6 +35256,11 @@
"resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
"integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ=="
},
+ "is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g=="
+ },
"is-negated-glob": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
@@ -41116,6 +41173,17 @@
}
}
},
+ "rollup-plugin-node-resolve": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.4.tgz",
+ "integrity": "sha512-t/64I6l7fZ9BxqD3XlX4ZeO6+5RLKyfpwE2CiPNUKa+GocPlQhf/C208ou8y3AwtNsc6bjSk/8/6y/YAyxCIvw==",
+ "requires": {
+ "@types/resolve": "0.0.8",
+ "builtin-modules": "^3.1.0",
+ "is-module": "^1.0.0",
+ "resolve": "^1.10.0"
+ }
+ },
"rollup-plugin-replace": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz",
diff --git a/package.json b/package.json
index 0179cd6ae0..6972f9d8a9 100644
--- a/package.json
+++ b/package.json
@@ -76,6 +76,7 @@
"postcss-unrgba": "^1.1.1",
"puppeteer": "^19.8.2",
"rollup": "0.59.4",
+ "rollup-plugin-node-resolve": "^4.2.4",
"rollup-plugin-replace": "^2.2.0",
"sass-embedded": "^1.60.0",
"sassdoc": "^2.7.4",
diff --git a/tasks/scripts.mjs b/tasks/scripts.mjs
index b1b23e55cd..2ef253ecc5 100644
--- a/tasks/scripts.mjs
+++ b/tasks/scripts.mjs
@@ -2,6 +2,7 @@ import { join, parse } from 'path'
import PluginError from 'plugin-error'
import { rollup } from 'rollup'
+import resolve from 'rollup-plugin-node-resolve'
import replace from 'rollup-plugin-replace'
import { minify } from 'terser'
@@ -42,7 +43,9 @@ export async function compileJavaScript ([modulePath, { srcPath, destPath, fileP
const moduleDestPath = join(destPath, filePath ? filePath(parse(modulePath)) : modulePath)
// Rollup plugins
- const plugins = []
+ const plugins = [
+ resolve()
+ ]
if (!isDev) {
// Add GOV.UK Frontend release version