87 lines
1.9 KiB
JavaScript
87 lines
1.9 KiB
JavaScript
const { createServer } = require('esbuild-server');
|
|
const path = require('node:path');
|
|
const fs = require('node:fs');
|
|
const { IncomingMessage } = require('node:http');
|
|
|
|
class Request extends IncomingMessage {
|
|
constructor(socket) {
|
|
super(socket);
|
|
}
|
|
|
|
get url() {
|
|
console.log('getter called', this._url);
|
|
return this._url;
|
|
}
|
|
|
|
set url(val) {
|
|
console.log('setter called', val);
|
|
this._url = val;
|
|
}
|
|
}
|
|
|
|
|
|
const resolveImportedSvg = {
|
|
name: 'resolveImportedSvg',
|
|
setup(build) {
|
|
build.onResolve({ filter: /\.svg$/ }, args => {
|
|
return {
|
|
path: path.resolve('public', args.path),
|
|
};
|
|
});
|
|
}
|
|
}
|
|
|
|
const resolveSvgImports = {
|
|
name: 'resolveSvgImports',
|
|
setup(build) {
|
|
build.onStart(() => {
|
|
fs.rmSync(path.resolve(build.initialOptions.outdir), { recursive: true, force: true });
|
|
});
|
|
|
|
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/index.js', 'src/soldier_record_block.js', 'src/map.js'],
|
|
outdir: 'build',
|
|
// ...(process.env.NODE_ENV !== 'test') && {
|
|
// outdir: 'build'
|
|
// },
|
|
plugins: [resolveSvgImports],
|
|
loader: {
|
|
'.svg': 'file'
|
|
},
|
|
assetNames: 'assets/images/[name]-[hash]',
|
|
},
|
|
{
|
|
static: 'public',
|
|
...(process.env.NODE_ENV === 'test') && {
|
|
port: 3005,
|
|
injectLiveReload: false,
|
|
watch: false,
|
|
// http: { IncomingMessage: Request }
|
|
}
|
|
}
|
|
);
|
|
|
|
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}`);
|