Fixed the esbuild errors during Docker build where npm packages couldn't be resolved. The issue was caused by node_modules being excluded from the Docker build context in .dockerignore. Implemented a proper vendor bundle strategy following Phoenix 1.7+ patterns: - Created vendor.js that bundles all npm dependencies (Leaflet, Chart.js, topbar) and their CSS files into a single pre-built bundle - Added vendor esbuild profile in config.exs with proper CSS/image loaders - Updated mix.exs to build vendor bundle before app bundle in assets.deploy - Modified JavaScript imports to use globally loaded libraries from vendor bundle instead of importing from node_modules - Added vendor.js script tag to root.html.heex before app.js This approach avoids Docker build failures by pre-bundling all vendor dependencies, eliminating the need for node_modules during production builds. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
28 lines
No EOL
781 B
JavaScript
28 lines
No EOL
781 B
JavaScript
// Vendor bundle for all third-party dependencies
|
|
// This file bundles all npm packages to avoid resolution issues during Docker builds
|
|
|
|
// Import CSS files first
|
|
import 'leaflet/dist/leaflet.css';
|
|
import 'leaflet.markercluster/dist/MarkerCluster.css';
|
|
import 'leaflet.markercluster/dist/MarkerCluster.Default.css';
|
|
|
|
// Export Leaflet and plugins
|
|
import * as L from 'leaflet';
|
|
import 'leaflet.heat';
|
|
import 'leaflet.markercluster';
|
|
import 'overlapping-marker-spiderfier-leaflet';
|
|
|
|
// Export Chart.js and adapter
|
|
import Chart from 'chart.js/auto';
|
|
import 'chartjs-adapter-date-fns';
|
|
|
|
// Export topbar
|
|
import topbar from 'topbar';
|
|
|
|
// Make libraries available globally
|
|
window.L = L;
|
|
window.Chart = Chart;
|
|
window.topbar = topbar;
|
|
|
|
// Export for ES modules
|
|
export { L, Chart, topbar }; |