diff --git a/.changeset/pink-dodos-suffer.md b/.changeset/pink-dodos-suffer.md
new file mode 100644
index 00000000..000fc35c
--- /dev/null
+++ b/.changeset/pink-dodos-suffer.md
@@ -0,0 +1,8 @@
+---
+"generator-single-spa": major
+---
+
+- Breaking: Upgrade svelte to v5. Mount and unmount need to be passed to the `singleSpaSvelte` function.
+- Breaking: Rollup now outputs using the ESM format rather than the System format.
+- Breaking: Set `"type": "module"` in package.json to avoid performance overhead during rollup.
+- Replace jest with vitest to simplify test setup.
diff --git a/packages/generator-single-spa/src/svelte/generator-single-spa-svelte.js b/packages/generator-single-spa/src/svelte/generator-single-spa-svelte.js
index 93d0f62a..2db50af5 100644
--- a/packages/generator-single-spa/src/svelte/generator-single-spa-svelte.js
+++ b/packages/generator-single-spa/src/svelte/generator-single-spa-svelte.js
@@ -113,13 +113,13 @@ module.exports = class SingleSpaSvelteGenerator extends PnpmGenerator {
projectName: this.options.projectName,
});
this.fs.copyTpl(
- this.templatePath(`jest.config.js`),
- this.destinationPath(`jest.config.js`),
+ this.templatePath(`vite.config.mjs`),
+ this.destinationPath(`vite.config.mjs`),
this.options
);
this.fs.copyTpl(
- this.templatePath(`babel.config.js`),
- this.destinationPath(`babel.config.js`),
+ this.templatePath(`setupTests.js`),
+ this.destinationPath(`setupTests.js`),
this.options
);
this.fs.copyTpl(
diff --git a/packages/generator-single-spa/src/svelte/templates/babel.config.js b/packages/generator-single-spa/src/svelte/templates/babel.config.js
deleted file mode 100644
index 392abb66..00000000
--- a/packages/generator-single-spa/src/svelte/templates/babel.config.js
+++ /dev/null
@@ -1,12 +0,0 @@
-module.exports = {
- presets: [
- [
- "@babel/preset-env",
- {
- targets: {
- node: "current",
- },
- },
- ],
- ],
-};
diff --git a/packages/generator-single-spa/src/svelte/templates/jest.config.js b/packages/generator-single-spa/src/svelte/templates/jest.config.js
deleted file mode 100644
index 5326bb08..00000000
--- a/packages/generator-single-spa/src/svelte/templates/jest.config.js
+++ /dev/null
@@ -1,9 +0,0 @@
-module.exports = {
- testEnvironment: "jsdom",
- transform: {
- "^.+\\.svelte$": "svelte-jester",
- "^.+\\.js$": "babel-jest",
- },
- moduleFileExtensions: ["js", "svelte"],
- setupFilesAfterEnv: ["@testing-library/jest-dom"],
-};
diff --git a/packages/generator-single-spa/src/svelte/templates/rollup.config.js b/packages/generator-single-spa/src/svelte/templates/rollup.config.js
index 57a9d591..dc197cbe 100644
--- a/packages/generator-single-spa/src/svelte/templates/rollup.config.js
+++ b/packages/generator-single-spa/src/svelte/templates/rollup.config.js
@@ -2,7 +2,8 @@ import svelte from "rollup-plugin-svelte";
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import livereload from "rollup-plugin-livereload";
-import { terser } from "rollup-plugin-terser";
+import { minify } from "rollup-plugin-esbuild-minify";
+import { spawn } from "child_process";
const production = !process.env.ROLLUP_WATCH;
@@ -10,14 +11,16 @@ export default {
input: "src/<%= orgName %>-<%= projectName %>.js",
output: {
sourcemap: true,
- format: "system",
+ format: "esm",
name: null, // ensure anonymous System.register
file: "dist/<%= orgName %>-<%= projectName %>.js",
},
plugins: [
svelte({
- // enable run-time checks when not in production
- dev: !production,
+ compilerOptions: {
+ // enable run-time checks when not in production
+ dev: !production,
+ },
emitCss: false,
}),
@@ -43,7 +46,7 @@ export default {
// If we're building for production (npm run build
// instead of npm run dev), minify
- production && terser(),
+ production && minify(),
],
watch: {
clearScreen: false,
@@ -58,7 +61,7 @@ function serve() {
if (!started) {
started = true;
- require("child_process").spawn("npm", ["run", "serve", "--", "--dev"], {
+ spawn("npm", ["run", "serve", "--", "--dev"], {
stdio: ["ignore", "inherit", "inherit"],
shell: true,
});
diff --git a/packages/generator-single-spa/src/svelte/templates/setupTests.js b/packages/generator-single-spa/src/svelte/templates/setupTests.js
new file mode 100644
index 00000000..f149f27a
--- /dev/null
+++ b/packages/generator-single-spa/src/svelte/templates/setupTests.js
@@ -0,0 +1 @@
+import "@testing-library/jest-dom/vitest";
diff --git a/packages/generator-single-spa/src/svelte/templates/src/App.svelte b/packages/generator-single-spa/src/svelte/templates/src/App.svelte
index 8b58acfb..e334b79f 100644
--- a/packages/generator-single-spa/src/svelte/templates/src/App.svelte
+++ b/packages/generator-single-spa/src/svelte/templates/src/App.svelte
@@ -1,5 +1,5 @@