summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-09-24 18:21:31 +0900
committerGitHub <noreply@github.com>2023-09-24 18:21:31 +0900
commitf32915b515f4cbc3b1a877cfb8e8e35bf6a31efa (patch)
tree0f6f098cbb282e4b6619152b14b9e6f57e6b448f /scripts
parentMerge pull request #11384 from misskey-dev/develop (diff)
parent2023.9.0 (diff)
downloadmisskey-f32915b515f4cbc3b1a877cfb8e8e35bf6a31efa.tar.gz
misskey-f32915b515f4cbc3b1a877cfb8e8e35bf6a31efa.tar.bz2
misskey-f32915b515f4cbc3b1a877cfb8e8e35bf6a31efa.zip
Merge pull request #11874 from misskey-dev/develop
Release: 2023.9.0
Diffstat (limited to 'scripts')
-rw-r--r--scripts/build-assets.mjs90
-rw-r--r--scripts/build-pre.js5
-rw-r--r--scripts/clean-all.js5
-rw-r--r--scripts/clean.js5
-rw-r--r--scripts/dev.mjs15
5 files changed, 118 insertions, 2 deletions
diff --git a/scripts/build-assets.mjs b/scripts/build-assets.mjs
new file mode 100644
index 0000000000..a8a2cafa5f
--- /dev/null
+++ b/scripts/build-assets.mjs
@@ -0,0 +1,90 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import * as fs from 'node:fs/promises';
+import * as path from 'node:path';
+import cssnano from 'cssnano';
+import postcss from 'postcss';
+import * as terser from 'terser';
+
+import locales from '../locales/index.js';
+import generateDTS from '../locales/generateDTS.js';
+import meta from '../package.json' assert { type: "json" };
+
+async function copyFrontendFonts() {
+ await fs.cp('./packages/frontend/node_modules/three/examples/fonts', './built/_frontend_dist_/fonts', { dereference: true, recursive: true });
+}
+
+async function copyFrontendTablerIcons() {
+ await fs.cp('./packages/frontend/node_modules/@tabler/icons-webfont', './built/_frontend_dist_/tabler-icons', { dereference: true, recursive: true });
+}
+
+async function copyFrontendLocales() {
+ generateDTS();
+
+ await fs.mkdir('./built/_frontend_dist_/locales', { recursive: true });
+
+ const v = { '_version_': meta.version };
+
+ for (const [lang, locale] of Object.entries(locales)) {
+ await fs.writeFile(`./built/_frontend_dist_/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8');
+ }
+}
+
+async function copyBackendViews() {
+ await fs.cp('./packages/backend/src/server/web/views', './packages/backend/built/server/web/views', { recursive: true });
+}
+
+async function buildBackendScript() {
+ await fs.mkdir('./packages/backend/built/server/web', { recursive: true });
+
+ for (const file of [
+ './packages/backend/src/server/web/boot.js',
+ './packages/backend/src/server/web/bios.js',
+ './packages/backend/src/server/web/cli.js'
+ ]) {
+ let source = await fs.readFile(file, { encoding: 'utf-8' });
+ source = source.replaceAll('LANGS', JSON.stringify(Object.keys(locales)));
+ const { code } = await terser.minify(source, { toplevel: true });
+ await fs.writeFile(`./packages/backend/built/server/web/${path.basename(file)}`, code);
+ }
+}
+
+async function buildBackendStyle() {
+ await fs.mkdir('./packages/backend/built/server/web', { recursive: true });
+
+ for (const file of [
+ './packages/backend/src/server/web/style.css',
+ './packages/backend/src/server/web/bios.css',
+ './packages/backend/src/server/web/cli.css',
+ './packages/backend/src/server/web/error.css'
+ ]) {
+ const source = await fs.readFile(file, { encoding: 'utf-8' });
+ const { css } = await postcss([cssnano({ zindex: false })]).process(source, { from: undefined });
+ await fs.writeFile(`./packages/backend/built/server/web/${path.basename(file)}`, css);
+ }
+}
+
+async function build() {
+ await Promise.all([
+ copyFrontendFonts(),
+ copyFrontendTablerIcons(),
+ copyFrontendLocales(),
+ copyBackendViews(),
+ buildBackendScript(),
+ buildBackendStyle(),
+ ]);
+}
+
+await build();
+
+if (process.argv.includes("--watch")) {
+ const watcher = fs.watch('./packages', { recursive: true });
+ for await (const event of watcher) {
+ if (/^[a-z]+\/src/.test(event.filename)) {
+ await build();
+ }
+ }
+}
diff --git a/scripts/build-pre.js b/scripts/build-pre.js
index e34a97738e..bf3e355b5b 100644
--- a/scripts/build-pre.js
+++ b/scripts/build-pre.js
@@ -1,3 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
const fs = require('fs');
const meta = require('../package.json');
diff --git a/scripts/clean-all.js b/scripts/clean-all.js
index 2d7fe99ae4..4735eed760 100644
--- a/scripts/clean-all.js
+++ b/scripts/clean-all.js
@@ -1,3 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
const { execSync } = require('child_process');
const fs = require('fs');
diff --git a/scripts/clean.js b/scripts/clean.js
index d32586914b..812553e17b 100644
--- a/scripts/clean.js
+++ b/scripts/clean.js
@@ -1,3 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
const fs = require('fs');
(async () => {
diff --git a/scripts/dev.mjs b/scripts/dev.mjs
index 0b07ae80cb..26f29fc491 100644
--- a/scripts/dev.mjs
+++ b/scripts/dev.mjs
@@ -1,3 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
import fs from 'node:fs';
import { dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
@@ -18,7 +23,13 @@ await execa('pnpm', ['build-pre'], {
stderr: process.stderr,
});
-execa('pnpm', ['exec', 'gulp', 'watch'], {
+await execa('pnpm', ['build-assets'], {
+ cwd: _dirname + '/../',
+ stdout: process.stdout,
+ stderr: process.stderr,
+});
+
+execa('pnpm', ['build-assets', '--watch'], {
cwd: _dirname + '/../',
stdout: process.stdout,
stderr: process.stderr,
@@ -44,7 +55,7 @@ execa('pnpm', ['--filter', 'sw', 'watch'], {
const start = async () => {
try {
- const stat = fs.statSync(_dirname + '/../packages/backend/built/boot/index.js');
+ const stat = fs.statSync(_dirname + '/../packages/backend/built/boot/entry.js');
if (!stat) throw new Error('not exist yet');
if (stat.size === 0) throw new Error('not built yet');