commit 929cfe5e73b6e8be22f0e1ddec018e5432e244e4 Author: Ryan Trinkle Date: Mon Jul 3 15:35:27 2023 -0400 Initial commit diff --git a/package.json b/package.json new file mode 100644 index 0000000..b38df96 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "next-haskell", + "version": "0.1.0", + "description": "Next.js integration for Haskell", + "main": "src/index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Obsidian Systems LLC", + "license": "BSD-3-Clause" +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..3aba14d --- /dev/null +++ b/src/index.js @@ -0,0 +1,31 @@ +module.exports = (nextConfig = {}) => { + return Object.assign({}, nextConfig, { + webpack(config, options) { + if (!options.defaultLoaders) { + throw new Error( + 'This plugin is not compatible with Next.js versions below 5.0.0 https://err.sh/next-plugins/upgrade' + ); + } + + const { dir, defaultLoaders, dev, isServer } = options; + + config.module.rules.push({ + test: /\.(cabal)$/, + include: [dir], + exclude: /dist-newstyle/, + use: [ + { + loader: 'haskell-loader', + options: { dev: false, isServer }, + }, + ], + }); + + if (typeof nextConfig.webpack === 'function') { + return nextConfig.webpack(config, options) + } else { + return config; + } + }, + }) +}