Web Dev Solutions

Catalin Mititiuc

aboutsummaryrefslogtreecommitdiff
blob: a4a5cb07578a95dc984c18f6fa05a7e2ac926576 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const { createServer } = require('esbuild-server');
const path = require('node:path');

const resolveImportedSvg = {
  name: 'resolveImportedSvg',
  setup(build) {
    build.onResolve({ filter: /\.svg$/ }, args => {
      return {
        path: path.resolve('public', args.path),
      };
    });
  }
}

const server = createServer(
  {
    bundle: true,
    define: {
      'env': `"${process.env.NODE_ENV || 'dev'}"`,
    },
    entryPoints: ['src/*.js'],
    ...(process.env.NODE_ENV !== 'test') && {
      outdir: 'build'
    },
    plugins: [resolveImportedSvg],
    loader: {
      '.svg': 'file'
    },
    metafile: true,
    assetNames: 'assets/images/[name]-[hash]',
  },
  {
    static: 'public',
    ...(process.env.NODE_ENV === 'test') && {
      port: 3005,
      injectLiveReload: false,
      watch: false
    }
  }
);

const buildStart = Date.now();
server
  .start()
  .then((d) => {
    console.log(`Build completed in ${Date.now() - buildStart}ms`);
  })
  .catch(() => {
    console.error('Build failed');
  });
console.log(`${process.env.NODE_ENV === 'test' ? 'Test' : 'Development'} server running at ${server.url}`);