refactor: remove isNullOrDefined() helper
[e-mobility-charging-stations-simulator.git] / bundle.js
index 84b45f8df4a15c8de630b779d860c41449a8310b..e96d450c0152ffbd43391a844b4492d05ae82024 100644 (file)
--- a/bundle.js
+++ b/bundle.js
@@ -1,27 +1,46 @@
 /* eslint-disable n/no-unpublished-import */
-import { env } from 'node:process';
+import { env } from 'node:process'
 
-import { build } from 'esbuild';
-import { clean } from 'esbuild-plugin-clean';
-import { copy } from 'esbuild-plugin-copy';
+import chalk from 'chalk'
+import { build } from 'esbuild'
+import { clean } from 'esbuild-plugin-clean'
+import { copy } from 'esbuild-plugin-copy'
 
-const isDevelopmentBuild = env.BUILD === 'development';
-const sourcemap = !!isDevelopmentBuild;
+const isDevelopmentBuild = env.BUILD === 'development'
+const sourcemap = !!isDevelopmentBuild
 
-(async () => {
+;(async () => {
+  console.info(chalk.green(`Building in ${isDevelopmentBuild ? 'development' : 'production'} mode`))
+  console.time('Build time')
   await build({
     entryPoints: ['./src/start.ts', './src/charging-station/ChargingStationWorker.ts'],
     bundle: true,
     platform: 'node',
     format: 'esm',
-    external: ['@mikro-orm/*'],
+    external: [
+      '@mikro-orm/*',
+      'ajv',
+      'ajv-formats',
+      'basic-ftp',
+      'chalk',
+      'date-fns',
+      'http-status-codes',
+      'just-merge',
+      'logform',
+      'mnemonist/*',
+      'mongodb',
+      'node:*',
+      'poolifier',
+      'tar',
+      'winston',
+      'winston/*',
+      'winston-daily-rotate-file',
+      'ws'
+    ],
     minify: true,
     sourcemap,
     entryNames: '[name]',
     outdir: './dist',
-    banner: {
-      js: "import { createRequire } from 'module';const require = createRequire(import.meta.url);",
-    },
     plugins: [
       clean({
         patterns: [
@@ -30,29 +49,30 @@ const sourcemap = !!isDevelopmentBuild;
           './dist/assets/*.json',
           './dist/assets/json-schemas',
           './dist/assets/station-templates',
-          './dist/assets/ui-protocol',
-        ],
+          './dist/assets/ui-protocol'
+        ]
       }),
       copy({
         assets: [
           {
             from: ['./src/assets/config.json'],
-            to: ['./assets'],
+            to: ['./assets']
           },
           {
             from: ['./src/assets/idtags!(-template)*.json'],
-            to: ['./assets'],
+            to: ['./assets']
           },
           {
             from: ['./src/assets/json-schemas/**/*.json'],
-            to: ['./assets/json-schemas'],
+            to: ['./assets/json-schemas']
           },
           {
             from: ['./src/assets/station-templates/**/*.json'],
-            to: ['./assets/station-templates'],
-          },
-        ],
-      }),
-    ],
-  });
-})();
+            to: ['./assets/station-templates']
+          }
+        ]
+      })
+    ]
+  })
+  console.timeEnd('Build time')
+})()