Merge branch 'refactor/remove-gulp' into 'develop'
refactor: replace gulp with a simple script See merge request firefish/firefish!10791
This commit is contained in:
commit
4e83dbd01f
8 changed files with 81 additions and 2451 deletions
|
@ -45,7 +45,7 @@ COPY packages/backend-rs/index.js packages/backend-rs/built/index.js
|
||||||
# Copy in the rest of the files to compile
|
# Copy in the rest of the files to compile
|
||||||
COPY . ./
|
COPY . ./
|
||||||
RUN NODE_ENV='production' pnpm run --filter firefish-js build
|
RUN NODE_ENV='production' pnpm run --filter firefish-js build
|
||||||
RUN NODE_ENV='production' pnpm run --recursive --parallel --filter '!backend-rs' --filter '!firefish-js' build && pnpm run gulp
|
RUN NODE_ENV='production' pnpm run --recursive --parallel --filter '!backend-rs' --filter '!firefish-js' build && pnpm run build:assets
|
||||||
|
|
||||||
# Trim down the dependencies to only those for production
|
# Trim down the dependencies to only those for production
|
||||||
RUN find . -path '*/node_modules/*' -delete && pnpm install --prod --frozen-lockfile
|
RUN find . -path '*/node_modules/*' -delete && pnpm install --prod --frozen-lockfile
|
||||||
|
|
|
@ -326,7 +326,7 @@ cd ~/firefish
|
||||||
- To add custom locales, place them in the `./custom/locales/` directory. If you name your custom locale the same as an existing locale, it will overwrite it. If you give it a unique name, it will be added to the list. Also make sure that the first part of the filename matches the locale you're basing it on. (Example: `en-FOO.yml`)
|
- To add custom locales, place them in the `./custom/locales/` directory. If you name your custom locale the same as an existing locale, it will overwrite it. If you give it a unique name, it will be added to the list. Also make sure that the first part of the filename matches the locale you're basing it on. (Example: `en-FOO.yml`)
|
||||||
- To add custom error images, place them in the `./custom/assets/badges` directory, replacing the files already there.
|
- To add custom error images, place them in the `./custom/assets/badges` directory, replacing the files already there.
|
||||||
- To add custom sounds, place only mp3 files in the `./custom/assets/sounds` directory.
|
- To add custom sounds, place only mp3 files in the `./custom/assets/sounds` directory.
|
||||||
- To update custom assets without rebuilding, just run `pnpm run gulp`.
|
- To update custom assets without rebuilding, just run `pnpm run build:assets`.
|
||||||
- To block ChatGPT, CommonCrawl, or other crawlers from indexing your instance, uncomment the respective rules in `./custom/robots.txt`.
|
- To block ChatGPT, CommonCrawl, or other crawlers from indexing your instance, uncomment the respective rules in `./custom/robots.txt`.
|
||||||
|
|
||||||
## Tips & Tricks
|
## Tips & Tricks
|
||||||
|
|
101
gulpfile.js
101
gulpfile.js
|
@ -1,101 +0,0 @@
|
||||||
/**
|
|
||||||
* Gulp tasks
|
|
||||||
*/
|
|
||||||
|
|
||||||
const fs = require("fs");
|
|
||||||
const gulp = require("gulp");
|
|
||||||
const replace = require("gulp-replace");
|
|
||||||
const terser = require("gulp-terser");
|
|
||||||
const cssnano = require("gulp-cssnano");
|
|
||||||
|
|
||||||
const meta = require("./package.json");
|
|
||||||
|
|
||||||
gulp.task("copy:backend:views", () =>
|
|
||||||
gulp
|
|
||||||
.src("./packages/backend/src/server/web/views/**/*")
|
|
||||||
.pipe(gulp.dest("./packages/backend/built/server/web/views")),
|
|
||||||
);
|
|
||||||
|
|
||||||
gulp.task("copy:backend:custom", () =>
|
|
||||||
gulp
|
|
||||||
.src("./custom/assets/**/*")
|
|
||||||
.pipe(gulp.dest("./packages/backend/assets/")),
|
|
||||||
);
|
|
||||||
|
|
||||||
gulp.task("copy:client:fonts", () =>
|
|
||||||
gulp
|
|
||||||
.src("./packages/client/node_modules/three/examples/fonts/**/*")
|
|
||||||
.pipe(gulp.dest("./built/_client_dist_/fonts/")),
|
|
||||||
);
|
|
||||||
|
|
||||||
gulp.task("copy:client:locales", async (cb) => {
|
|
||||||
fs.mkdirSync("./built/_client_dist_/locales", { recursive: true });
|
|
||||||
const { default: locales } = await import("./locales/index.mjs");
|
|
||||||
|
|
||||||
const v = { _version_: meta.version };
|
|
||||||
|
|
||||||
for (const [lang, locale] of Object.entries(locales)) {
|
|
||||||
fs.writeFileSync(
|
|
||||||
`./built/_client_dist_/locales/${lang}.${meta.version}.json`,
|
|
||||||
JSON.stringify({ ...locale, ...v }),
|
|
||||||
"utf-8",
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
cb();
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task("build:backend:script", async () => {
|
|
||||||
const { default: locales } = await import("./locales/index.mjs");
|
|
||||||
|
|
||||||
return gulp
|
|
||||||
.src([
|
|
||||||
"./packages/backend/src/server/web/boot.js",
|
|
||||||
"./packages/backend/src/server/web/bios.js",
|
|
||||||
"./packages/backend/src/server/web/cli.js",
|
|
||||||
])
|
|
||||||
.pipe(replace("SUPPORTED_LANGS", JSON.stringify(Object.keys(locales))))
|
|
||||||
.pipe(
|
|
||||||
terser({
|
|
||||||
toplevel: true,
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
.pipe(gulp.dest("./packages/backend/built/server/web/"));
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task("build:backend:style", () => {
|
|
||||||
return gulp
|
|
||||||
.src([
|
|
||||||
"./packages/backend/src/server/web/style.css",
|
|
||||||
"./packages/backend/src/server/web/bios.css",
|
|
||||||
"./packages/backend/src/server/web/cli.css",
|
|
||||||
])
|
|
||||||
.pipe(
|
|
||||||
cssnano({
|
|
||||||
zindex: false,
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
.pipe(gulp.dest("./packages/backend/built/server/web/"));
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task(
|
|
||||||
"build",
|
|
||||||
gulp.parallel(
|
|
||||||
"copy:client:locales",
|
|
||||||
"copy:backend:views",
|
|
||||||
"copy:backend:custom",
|
|
||||||
"build:backend:script",
|
|
||||||
"build:backend:style",
|
|
||||||
"copy:client:fonts",
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
gulp.task("default", gulp.task("build"));
|
|
||||||
|
|
||||||
gulp.task("watch", () => {
|
|
||||||
gulp.watch(
|
|
||||||
["./packages/*/src/**/*"],
|
|
||||||
{ ignoreInitial: false },
|
|
||||||
gulp.task("build"),
|
|
||||||
);
|
|
||||||
});
|
|
12
package.json
12
package.json
|
@ -9,14 +9,15 @@
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"rebuild": "pnpm run clean && pnpm run build",
|
"rebuild": "pnpm run clean && pnpm run build",
|
||||||
"build": "pnpm node ./scripts/build.mjs && pnpm run gulp",
|
"build": "pnpm node ./scripts/build.mjs && pnpm run build:assets",
|
||||||
|
"build:assets": "pnpm node ./scripts/copy-assets.mjs",
|
||||||
|
"build:debug": "pnpm run clean && pnpm node ./scripts/dev-build.mjs && pnpm run build:assets",
|
||||||
"start": "pnpm --filter backend run start",
|
"start": "pnpm --filter backend run start",
|
||||||
"start:container": "pnpm run gulp && pnpm run migrate && pnpm run start",
|
"start:container": "pnpm run build:assets && pnpm run migrate && pnpm run start",
|
||||||
"start:test": "pnpm --filter backend run start:test",
|
"start:test": "pnpm --filter backend run start:test",
|
||||||
"init": "pnpm run migrate",
|
"init": "pnpm run migrate",
|
||||||
"migrate": "pnpm --filter backend run migration:run",
|
"migrate": "pnpm --filter backend run migration:run",
|
||||||
"revertmigration": "pnpm --filter backend run migration:revert",
|
"revertmigration": "pnpm --filter backend run migration:revert",
|
||||||
"gulp": "gulp build",
|
|
||||||
"watch": "pnpm run dev",
|
"watch": "pnpm run dev",
|
||||||
"dev": "pnpm node ./scripts/dev.mjs",
|
"dev": "pnpm node ./scripts/dev.mjs",
|
||||||
"dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start",
|
"dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start",
|
||||||
|
@ -24,7 +25,6 @@
|
||||||
"lint:ts": "pnpm --filter !firefish-js -r --parallel run lint",
|
"lint:ts": "pnpm --filter !firefish-js -r --parallel run lint",
|
||||||
"lint:rs": "cargo clippy --fix --allow-dirty --allow-staged && cargo fmt --all --",
|
"lint:rs": "cargo clippy --fix --allow-dirty --allow-staged && cargo fmt --all --",
|
||||||
"debug": "pnpm run build:debug && pnpm run start",
|
"debug": "pnpm run build:debug && pnpm run start",
|
||||||
"build:debug": "pnpm run clean && pnpm node ./scripts/dev-build.mjs && pnpm run gulp",
|
|
||||||
"mocha": "pnpm --filter backend run mocha",
|
"mocha": "pnpm --filter backend run mocha",
|
||||||
"test": "pnpm run test:ts && pnpm run test:rs",
|
"test": "pnpm run test:ts && pnpm run test:rs",
|
||||||
"test:ts": "pnpm run mocha",
|
"test:ts": "pnpm run mocha",
|
||||||
|
@ -38,10 +38,6 @@
|
||||||
"clean-all": "pnpm run clean && pnpm run clean-cargo && pnpm run clean-npm"
|
"clean-all": "pnpm run clean && pnpm run clean-cargo && pnpm run clean-npm"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"gulp": "4.0.2",
|
|
||||||
"gulp-cssnano": "2.1.3",
|
|
||||||
"gulp-replace": "1.1.4",
|
|
||||||
"gulp-terser": "2.1.0",
|
|
||||||
"js-yaml": "4.1.0"
|
"js-yaml": "4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -21,8 +21,6 @@
|
||||||
"@syuilo/aiscript": "0.17.0",
|
"@syuilo/aiscript": "0.17.0",
|
||||||
"@types/autosize": "^4.0.3",
|
"@types/autosize": "^4.0.3",
|
||||||
"@types/glob": "8.1.0",
|
"@types/glob": "8.1.0",
|
||||||
"@types/gulp": "4.0.17",
|
|
||||||
"@types/gulp-rename": "2.0.6",
|
|
||||||
"@types/insert-text-at-cursor": "^0.3.2",
|
"@types/insert-text-at-cursor": "^0.3.2",
|
||||||
"@types/katex": "0.16.7",
|
"@types/katex": "0.16.7",
|
||||||
"@types/matter-js": "0.19.6",
|
"@types/matter-js": "0.19.6",
|
||||||
|
|
2366
pnpm-lock.yaml
2366
pnpm-lock.yaml
File diff suppressed because it is too large
Load diff
41
scripts/copy-assets.mjs
Normal file
41
scripts/copy-assets.mjs
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
import fs from "node:fs/promises";
|
||||||
|
import path, { join } from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
|
|
||||||
|
const repositoryRootDir = join(path.dirname(fileURLToPath(import.meta.url)), "../");
|
||||||
|
const file = (relativePath) => join(repositoryRootDir, relativePath);
|
||||||
|
|
||||||
|
await (async () => {
|
||||||
|
await fs.rm(file("built/_client_dist_/locales"), { recursive: true, force: true });
|
||||||
|
await Promise.all([
|
||||||
|
fs.cp(file("packages/backend/src/server/web"), file("packages/backend/built/server/web"), { recursive: true }),
|
||||||
|
fs.cp(file("custom/assets"), file("packages/backend/assets"), { recursive: true }),
|
||||||
|
fs.cp(file("packages/client/node_modules/three/examples/fonts"), file("built/_client_dist_/fonts"), { recursive: true }),
|
||||||
|
fs.mkdir(file("built/_client_dist_/locales"), { recursive: true }),
|
||||||
|
]);
|
||||||
|
|
||||||
|
const locales = (await import("../locales/index.mjs")).default;
|
||||||
|
const meta = (await import("../built/meta.json", { assert: { type: "json" } })).default;
|
||||||
|
|
||||||
|
for await (const [lang, locale] of Object.entries(locales)) {
|
||||||
|
await fs.writeFile(
|
||||||
|
file(`built/_client_dist_/locales/${lang}.${meta.version}.json`),
|
||||||
|
JSON.stringify({ ...locale, _version_: meta.version }),
|
||||||
|
"utf-8",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const js_assets = [
|
||||||
|
file("packages/backend/built/server/web/boot.js"),
|
||||||
|
file("packages/backend/built/server/web/bios.js"),
|
||||||
|
file("packages/backend/built/server/web/cli.js"),
|
||||||
|
];
|
||||||
|
|
||||||
|
for await (const js_file of js_assets) {
|
||||||
|
const content = (await fs.readFile(js_file, "utf-8"))
|
||||||
|
.replace("SUPPORTED_LANGS", JSON.stringify(Object.keys(locales)));
|
||||||
|
await fs.writeFile(js_file, content, "utf-8");
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO?: minify packages/backend/built/server/web/*.css
|
||||||
|
})();
|
|
@ -11,12 +11,6 @@ import { execa } from "execa";
|
||||||
stderr: process.stderr,
|
stderr: process.stderr,
|
||||||
});
|
});
|
||||||
|
|
||||||
execa("pnpm", ["dlx", "gulp", "watch"], {
|
|
||||||
cwd: join(__dirname, "/../"),
|
|
||||||
stdout: process.stdout,
|
|
||||||
stderr: process.stderr,
|
|
||||||
});
|
|
||||||
|
|
||||||
execa("pnpm", ["--filter", "backend", "watch"], {
|
execa("pnpm", ["--filter", "backend", "watch"], {
|
||||||
cwd: join(__dirname, "/../"),
|
cwd: join(__dirname, "/../"),
|
||||||
stdout: process.stdout,
|
stdout: process.stdout,
|
||||||
|
|
Loading…
Reference in a new issue