bundle build script

This commit is contained in:
Flam3rboy 2021-10-08 10:43:43 +02:00
parent 29516da90f
commit 3b74fa9299
14 changed files with 77 additions and 25 deletions

BIN
api/package-lock.json generated

Binary file not shown.

View File

@ -10,7 +10,7 @@
"test": "npm run build && npm run test:only", "test": "npm run build && npm run test:only",
"test:watch": "jest --watch", "test:watch": "jest --watch",
"start": "npm run build && node dist/start", "start": "npm run build && node dist/start",
"build": "npx swc src --out-dir dist", "build": "npx tsc -b .",
"build-docker": "tsc -p tsconfig-docker.json", "build-docker": "tsc -p tsconfig-docker.json",
"dev": "tsnd --respawn src/start.ts", "dev": "tsnd --respawn src/start.ts",
"patch": "ts-patch install -s && npx patch-package", "patch": "ts-patch install -s && npx patch-package",
@ -69,6 +69,7 @@
"ts-node": "^9.1.1", "ts-node": "^9.1.1",
"ts-node-dev": "^1.1.6", "ts-node-dev": "^1.1.6",
"ts-patch": "^1.4.4", "ts-patch": "^1.4.4",
"tsup": "^5.4.0",
"typescript": "^4.4.2", "typescript": "^4.4.2",
"typescript-json-schema": "0.50.1" "typescript-json-schema": "0.50.1"
}, },
@ -86,6 +87,7 @@
"dot-prop": "^6.0.1", "dot-prop": "^6.0.1",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"env-paths": "^2.2.1", "env-paths": "^2.2.1",
"esbuild": "^0.13.4",
"express": "^4.17.1", "express": "^4.17.1",
"express-validator": "^6.9.2", "express-validator": "^6.9.2",
"form-data": "^3.0.0", "form-data": "^3.0.0",

BIN
bundle/package-lock.json generated

Binary file not shown.

View File

@ -6,9 +6,9 @@
"scripts": { "scripts": {
"setup": "cd ../util && npm --production=false i && cd ../api && npm --production=false i && cd ../cdn && npm --production=false i && cd ../gateway && npm --production=false i && cd ../bundle/ && npm --production=false i && npm run build", "setup": "cd ../util && npm --production=false i && cd ../api && npm --production=false i && cd ../cdn && npm --production=false i && cd ../gateway && npm --production=false i && cd ../bundle/ && npm --production=false i && npm run build",
"build": "node scripts/build.js", "build": "node scripts/build.js",
"build:bundle": "npx swc src --out-dir dist", "build:bundle": "npx tsc -b .",
"start": "npm run build && npm run start:bundle", "start": "node scripts/build.js && node -r tsconfig-paths/register dist/start.js",
"start:bundle": "node dist/start.js", "start:bundle": "node -r tsconfig-paths/register dist/start.js",
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"repository": { "repository": {
@ -41,9 +41,12 @@
"@types/uuid": "^8.3.0", "@types/uuid": "^8.3.0",
"@types/ws": "^7.4.0", "@types/ws": "^7.4.0",
"@zerollup/ts-transform-paths": "^1.7.18", "@zerollup/ts-transform-paths": "^1.7.18",
"esbuild": "^0.13.4",
"esbuild-plugin-tsc": "^0.3.0",
"ts-node": "^10.2.1", "ts-node": "^10.2.1",
"ts-patch": "^1.4.4", "ts-patch": "^1.4.4",
"typescript": "^4.3.5" "tsconfig-paths": "^3.11.0",
"typescript": "^4.4.3"
}, },
"dependencies": { "dependencies": {
"@fosscord/api": "file:../api", "@fosscord/api": "file:../api",
@ -56,7 +59,6 @@
"missing-native-js-functions": "^1.2.17", "missing-native-js-functions": "^1.2.17",
"nanocolors": "^0.2.12", "nanocolors": "^0.2.12",
"node-os-utils": "^1.3.5", "node-os-utils": "^1.3.5",
"swc": "^1.0.11", "reflect-metadata": "^0.1.13"
"tsconfig-paths": "^3.11.0"
} }
} }

View File

@ -1,37 +1,70 @@
const { spawn } = require("child_process"); const { spawn } = require("child_process");
const path = require("path"); const path = require("path");
const { performance } = require("perf_hooks"); const { performance } = require("perf_hooks");
const fs = require("fs");
const esbuildPluginTsc = require("esbuild-plugin-tsc");
let parts = "util,api,cdn,gateway,bundle".split(","); let parts = "api,cdn,gateway,bundle".split(",");
const tscBin = path.join(__dirname, "..", "..", "util", "node_modules", "typescript", "bin", "tsc");
const swcBin = path.join(__dirname, "..", "..", "util", "node_modules", "@swc", "cli", "bin", "swc");
// because npm run is slow we directly get the build script of the package.json script // because npm run is slow we directly get the build script of the package.json script
function buildPackage(dir) { function buildPackage(dir) {
const element = path.basename(dir); const element = path.basename(dir);
const swcBin = path.join(dir, "node_modules", "@swc", "cli", "lib", "swc", "index.js");
const child = spawn("node", `${swcBin} src --out-dir dist --sync`.split(" "), { require("esbuild").build({
cwd: dir, entryPoints: walk(path.join(dir, "src")),
bundle: false,
outdir: path.join(dir, "dist"),
target: "es2021",
format: "cjs",
plugins: [esbuildPluginTsc({})],
keepNames: true,
});
}
function util() {
// const child = spawn("node", `${swcBin} src --out-dir dist --sync`.split(" "), {
const child = spawn("node", `${tscBin} -b .`.split(" "), {
cwd: path.join(__dirname, "..", "..", "util"),
env: process.env, env: process.env,
shell: true, shell: true,
}); });
function log(data) { function log(data) {
console.log(`[${element}]`.padEnd(10, " ") + data.toString().slice(0, -1)); console.log(`[util] ` + data.toString().slice(0, -1));
} }
child.stdout.on("data", log); child.stdout.on("data", log);
child.stderr.on("data", log); child.stderr.on("data", log);
child.on("error", (err) => console.error(element, err)); child.on("error", (err) => console.error("util", err));
return child; return child;
} }
// util needs to be compiled first as the others require it
const start = performance.now(); const start = performance.now();
console.log("[Build] starting ...");
util();
for (const part of parts) { for (const part of parts) {
buildPackage(path.join(__dirname, "..", "..", part)); buildPackage(path.join(__dirname, "..", "..", part));
} }
process.on("exit", () => { process.on("exit", () => {
console.log("[Build] took " + Math.round(performance.now() - start) + "ms"); console.log("[Build] took " + Math.round(performance.now() - start) + "ms");
}); });
function walk(dir) {
var results = [];
var list = fs.readdirSync(dir);
list.forEach(function (file) {
file = dir + "/" + file;
var stat = fs.statSync(file);
if (stat && stat.isDirectory()) {
/* Recurse into a subdirectory */
results = results.concat(walk(file));
} else if (file.endsWith(".ts")) {
/* Is a file */
results.push(file);
}
});
return results;
}

View File

@ -1,4 +1,20 @@
// process.env.MONGOMS_DEBUG = "true"; // process.env.MONGOMS_DEBUG = "true";
const tsConfigPaths = require("tsconfig-paths");
const path = require("path");
const baseUrl = path.join(__dirname, ".."); // Either absolute or relative path. If relative it's resolved to current working directory.
const cleanup = tsConfigPaths.register({
baseUrl,
paths: {
"@fosscord/api": ["../api/dist/index.js"],
"@fosscord/api/*": ["../api/dist/*"],
"@fosscord/gateway": ["../gateway/dist/index.js"],
"@fosscord/gateway/*": ["../gateway/dist/*"],
"@fosscord/cdn": ["../cdn/dist/index.js"],
"@fosscord/cdn/*": ["../cdn/dist/*"],
},
});
import "reflect-metadata";
import cluster from "cluster"; import cluster from "cluster";
import os from "os"; import os from "os";
import { red, bold, yellow, cyan } from "nanocolors"; import { red, bold, yellow, cyan } from "nanocolors";

View File

@ -4,7 +4,7 @@
/* Visit https://aka.ms/tsconfig.json to read more about this file */ /* Visit https://aka.ms/tsconfig.json to read more about this file */
/* Basic Options */ /* Basic Options */
"incremental": true, /* Enable incremental compilation */ "incremental": true /* Enable incremental compilation */,
"target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, "target": "ESNext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
"lib": ["ES2021"] /* Specify library files to be included in the compilation. */, "lib": ["ES2021"] /* Specify library files to be included in the compilation. */,
@ -63,6 +63,8 @@
/* Advanced Options */ /* Advanced Options */
"skipLibCheck": true /* Skip type checking of declaration files. */, "skipLibCheck": true /* Skip type checking of declaration files. */,
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
} }
} }

BIN
cdn/package-lock.json generated

Binary file not shown.

View File

@ -7,7 +7,7 @@
"scripts": { "scripts": {
"postinstall": "ts-patch install -s", "postinstall": "ts-patch install -s",
"test": "npm run build && jest --coverage ./tests", "test": "npm run build && jest --coverage ./tests",
"build": "npx swc src --out-dir dist", "build": "npx tsc -b .",
"start": "npm run build && node dist/start.js" "start": "npm run build && node dist/start.js"
}, },
"repository": { "repository": {
@ -61,7 +61,6 @@
"nanocolors": "^0.2.12", "nanocolors": "^0.2.12",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"supertest": "^6.1.6", "supertest": "^6.1.6",
"swc": "^1.0.11",
"typescript": "^4.1.2", "typescript": "^4.1.2",
"uuid": "^8.3.2" "uuid": "^8.3.2"
}, },

Binary file not shown.

View File

@ -8,7 +8,7 @@
"postinstall": "npx ts-patch install -s", "postinstall": "npx ts-patch install -s",
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"start": "npm run build && node dist/start.js", "start": "npm run build && node dist/start.js",
"build": "npx swc src --out-dir dist", "build": "npx tsc -b .",
"dev": "tsnd --respawn src/start.ts" "dev": "tsnd --respawn src/start.ts"
}, },
"keywords": [], "keywords": [],
@ -41,7 +41,6 @@
"missing-native-js-functions": "^1.2.17", "missing-native-js-functions": "^1.2.17",
"mongoose-autopopulate": "^0.12.3", "mongoose-autopopulate": "^0.12.3",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"swc": "^1.0.11",
"typeorm": "^0.2.37", "typeorm": "^0.2.37",
"uuid": "^8.3.2", "uuid": "^8.3.2",
"ws": "^7.4.2" "ws": "^7.4.2"

BIN
util/package-lock.json generated

Binary file not shown.

View File

@ -8,7 +8,7 @@
"start": "npm run build && node dist/", "start": "npm run build && node dist/",
"test": "npm run build && jest", "test": "npm run build && jest",
"postinstall": "npm run build", "postinstall": "npm run build",
"build": "npx swc src --out-dir dist" "build": "npx tsc -b ."
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -54,7 +54,6 @@
"pg": "^8.7.1", "pg": "^8.7.1",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"sqlite3": "^5.0.2", "sqlite3": "^5.0.2",
"swc": "^1.0.11",
"tsconfig-paths": "^3.11.0", "tsconfig-paths": "^3.11.0",
"typeorm": "^0.2.37", "typeorm": "^0.2.37",
"typescript": "^4.4.2", "typescript": "^4.4.2",

View File

@ -1,5 +1,5 @@
// @ts-nocheck // @ts-nocheck
import cluster from "cluster"; import * as cluster from "cluster";
// https://github.com/discordjs/discord.js/blob/master/src/util/Snowflake.js // https://github.com/discordjs/discord.js/blob/master/src/util/Snowflake.js
// Apache License Version 2.0 Copyright 2015 - 2021 Amish Shah // Apache License Version 2.0 Copyright 2015 - 2021 Amish Shah