From 83cdef298b7c8ba1a49b75809c73f7eebce6cfd9 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 27 Nov 2025 11:16:14 +0900 Subject: [PATCH] wip --- package.json | 6 ++-- packages/backend/build.js | 58 +++++++++++++++++++++++++++++++++++ packages/backend/package.json | 2 +- 3 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 packages/backend/build.js diff --git a/package.json b/package.json index 1bcf1287bd..c2d7ab67cc 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,9 @@ "build": "pnpm build-pre && pnpm -r build && pnpm build-assets", "build-storybook": "pnpm --filter frontend build-storybook", "build-misskey-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json --no-build && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api", - "start": "pnpm check:connect && cd packages/backend && node ./built/boot/entry.js", - "start:inspect": "cd packages/backend && node --inspect ./built/boot/entry.js", - "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && cross-env NODE_ENV=test node ./built/boot/entry.js", + "start": "cd packages/backend && node ./built/entry.js", + "start:inspect": "cd packages/backend && node --inspect ./built/entry.js", + "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && cross-env NODE_ENV=test node ./built/entry.js", "cli": "cd packages/backend && pnpm cli", "init": "pnpm migrate", "migrate": "cd packages/backend && pnpm migrate", diff --git a/packages/backend/build.js b/packages/backend/build.js new file mode 100644 index 0000000000..3d178e5566 --- /dev/null +++ b/packages/backend/build.js @@ -0,0 +1,58 @@ +import fs from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { dirname } from 'node:path'; +import { build } from 'esbuild'; + +const _filename = fileURLToPath(import.meta.url); +const _dirname = dirname(_filename); +const _package = JSON.parse(fs.readFileSync(_dirname + '/package.json', 'utf-8')); + +/** @type {import('esbuild').BuildOptions} */ +const options = { + entryPoints: ['./src/boot/entry.ts'], + //minify: process.env.NODE_ENV === 'production', + minify: false, + bundle: true, + outdir: './built', + target: 'node22', + platform: 'node', + format: 'esm', + sourcemap: false, + external: [ + '*.node', + '*.html', + 'class-transformer', + 'class-validator', + '@nestjs/websockets/socket-module', + '@nestjs/microservices/microservices-module', + '@nestjs/microservices', + '@napi-rs/canvas-win32-x64-msvc', + 'slacc-win32-x64-msvc', + 'mock-aws-s3', + 'aws-sdk', + 'nock', + ], +}; + +const args = process.argv.slice(2).map(arg => arg.toLowerCase()); + +if (!args.includes('--no-clean')) { + fs.rmSync('./built', { recursive: true, force: true }); +} + +await buildSrc(); + +async function buildSrc() { + console.log(`[${_package.name}] start building...`); + + await build(options) + .then(() => { + console.log(`[${_package.name}] build succeeded.`); + }) + .catch((err) => { + process.stderr.write(err.stderr); + process.exit(1); + }); + + console.log(`[${_package.name}] finish building.`); +} diff --git a/packages/backend/package.json b/packages/backend/package.json index 730f42f8de..9e511aa5bc 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -14,7 +14,7 @@ "revert": "pnpm typeorm migration:revert -d ormconfig.js", "cli": "node ./built/boot/cli.js", "check:connect": "node ./scripts/check_connect.js", - "build": "swc src -d built -D --strip-leading-paths", + "build": "node ./build.js", "build:test": "swc test-server -d built-test -D --config-file test-server/.swcrc --strip-leading-paths", "watch:swc": "swc src -d built -D -w --strip-leading-paths", "build:tsc": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json",