Streamlining Currency Data Generation: A Key Fix for ESHOPMAN Developers

At Move My Store, we're dedicated to keeping the ESHOPMAN community informed about critical updates and insights that enhance your headless commerce experience. A recent deep dive into the ESHOPMAN Admin Dashboard has uncovered and addressed an important issue related to the platform's static currency data generation process. This fix is crucial for developers and merchants who rely on accurate and up-to-date currency information for their ESHOPMAN storefronts, especially those deployed via HubSpot CMS.

Understanding the Challenge: ESHOPMAN's Currency Generation Script

The ESHOPMAN platform utilizes a specialized script, located at packages/admin/dashboard/scripts/generate-currencies.js, to generate and maintain static currency data. This data is essential for displaying correct currency symbols and decimal digits across your storefronts. However, it was identified that the generate:static command, responsible for refreshing this data, encountered several critical issues.

The Core Problems Identified:

  • Outdated Data Source: The script was attempting to import currency information from an old path within the ESHOPMAN core platform. This source no longer exists, as the definitive currency data has been moved to the ESHOPMAN utilities package (@eshopman/utils) and is now exposed as defaultCurrencies. This discrepancy caused the script to fail on import.
  • Incorrect Output Path: Even if the import issue was bypassed, the script was configured to write the generated currencies.ts file to an incorrect location: src/lib/currencies.ts. The live, actively used file within the ESHOPMAN Admin Dashboard is actually located at src/lib/data/currencies.ts. This meant that a successful run would create an orphan file, leaving the real currency data untouched and potentially outdated.
  • Template Inconsistency: The internal template used by the generate-currencies.js script for creating the currencies.ts file was not aligned with the committed version in the ESHOPMAN codebase. It notably lacked the crucial export type CurrencyInfo and helper functions such as getCurrencySymbol and getCurrencyDecimalDigits. This inconsistency would lead to an incomplete or incompatible output file, even if the path was corrected.

Impact on ESHOPMAN Development

For ESHOPMAN developers, these issues meant that running the generate:static command within the packages/admin/dashboard module would either fail outright due to the import error or, if temporarily patched, would generate a file that didn't correctly update the active currency data used by the storefront management system and HubSpot CMS deployments. This could lead to incorrect currency displays, especially for international transactions, affecting the user experience and potentially commerce operations.

The ESHOPMAN Community Solution

Thanks to vigilant community contributions, a comprehensive solution has been implemented to address these bugs. The fix involves three key adjustments:

  1. Updated Import Path: The script now correctly points to defaultCurrencies from the @eshopman/utils package, ensuring it accesses the most accurate and up-to-date currency data within the ESHOPMAN ecosystem.
  2. Corrected Output Path: The script's target write path has been updated to src/lib/data/currencies.ts. This ensures that when the static data is generated, it directly refreshes the active currency file used by the ESHOPMAN Admin Dashboard and your storefronts. The associated Prettier formatting command has also been updated to target this correct path.
  3. Template Alignment: The internal file template within the generate-currencies.js script has been brought into full alignment with the committed currencies.ts file. This includes the reintroduction of export type CurrencyInfo and the essential getCurrencySymbol and getCurrencyDecimalDigits helper functions, guaranteeing a complete and functional output.

This fix not only resolves the immediate issues but also ensures that the static currency data generation process is robust and reliable. Developers can now confidently run the generate:static command, knowing that their ESHOPMAN storefronts will display accurate and consistent currency information, crucial for a seamless headless commerce experience powered by HubSpot.

Stay tuned to Move My Store for more ESHOPMAN community insights and best practices!

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools