diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-09-24 18:21:31 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-24 18:21:31 +0900 |
| commit | f32915b515f4cbc3b1a877cfb8e8e35bf6a31efa (patch) | |
| tree | 0f6f098cbb282e4b6619152b14b9e6f57e6b448f /scripts | |
| parent | Merge pull request #11384 from misskey-dev/develop (diff) | |
| parent | 2023.9.0 (diff) | |
| download | misskey-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.mjs | 90 | ||||
| -rw-r--r-- | scripts/build-pre.js | 5 | ||||
| -rw-r--r-- | scripts/clean-all.js | 5 | ||||
| -rw-r--r-- | scripts/clean.js | 5 | ||||
| -rw-r--r-- | scripts/dev.mjs | 15 |
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'); |