const commerce = require('./commerce.config.json') const { withCommerceConfig, getProviderName, } = require('./framework/commerce/config') const provider = commerce.provider || getProviderName() const isBC = provider === 'bigcommerce' const isShopify = provider === 'shopify' const isSaleor = provider === 'saleor' const isSwell = provider === 'swell' const isVendure = provider === 'vendure' // This file sets a custom webpack configuration to use your Next.js app // with Sentry. // https://nextjs.org/docs/api-reference/next.config.js/introduction // https://docs.sentry.io/platforms/javascript/guides/nextjs/ const { withSentryConfig } = require('@sentry/nextjs'); const SentryWebpackPluginOptions = { // Additional config options for the Sentry Webpack plugin. Keep in mind that // the following options are set automatically, and overriding them is not // recommended: // release, url, org, project, authToken, configFile, stripPrefix, // urlPrefix, include, ignore // For all available options, see: // https://github.com/getsentry/sentry-webpack-plugin#options. }; let moduleExports = withCommerceConfig({ commerce, i18n: { locales: ['en-US', 'es'], defaultLocale: 'en-US', }, rewrites() { return [ (isBC || isShopify || isSwell || isVendure || isSaleor) && { source: '/checkout', destination: '/api/checkout', }, // The logout is also an action so this route is not required, but it's also another way // you can allow a logout! isBC && { source: '/logout', destination: '/api/logout?redirect_to=/', }, // For Vendure, rewrite the local api url to the remote (external) api url. This is required // to make the session cookies work. isVendure && process.env.NEXT_PUBLIC_VENDURE_LOCAL_URL && { source: `${process.env.NEXT_PUBLIC_VENDURE_LOCAL_URL}/:path*`, destination: `${process.env.NEXT_PUBLIC_VENDURE_SHOP_API_URL}/:path*`, }, ].filter(Boolean) }, }) // Make sure adding Sentry options is the last code to run before exporting, to // ensure that your source maps include changes from all other Webpack plugins module.exports = withSentryConfig(moduleExports, SentryWebpackPluginOptions); // Don't delete this console log, useful to see the commerce config in Vercel deployments console.log('next.config.js', JSON.stringify(module.exports, null, 2))