blurts-server/esbuild.cronjobs.js

27 строки
1.2 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import { build } from "esbuild";
// Theoretically, since the cron jobs run in Node, we don't need a bundler,
// since there are no HTTP requests we're trying to optimise. However, plain
// Node.js can't resolve module imports without file extensions (e.g.
// `"../db/tables/subscribers"`), so all import specifiers in *any* module that
// gets loaded by the cron jobs would need to use file extensions, which should
// also match those of the generated files (i.e. .js rather than .ts). Some of
// those modules are also used in our website, where this is bound to cause its
// own issues in Next.js. Thus, esbuild is a compromise that can resolve these
// import specifiers for us.
build({
entryPoints: ["./src/scripts/cronjobs/**/*.tsx", "./src/scripts/cronjobs/**/*.ts"],
tsconfig: "tsconfig.cronjobs.json",
bundle: true,
platform: "node",
format: "esm",
outdir: "dist/scripts/cronjobs/",
sourcemap: true,
target: "node20.9",
packages: "external",
});