diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/build-assets.mjs | 27 | ||||
| -rw-r--r-- | scripts/build-pre.js | 2 | ||||
| -rw-r--r-- | scripts/clean-all.js | 11 | ||||
| -rw-r--r-- | scripts/clean.js | 5 | ||||
| -rw-r--r-- | scripts/dev.mjs | 30 | ||||
| -rw-r--r-- | scripts/tarball.mjs | 32 |
6 files changed, 91 insertions, 16 deletions
diff --git a/scripts/build-assets.mjs b/scripts/build-assets.mjs index 22f0871caa..7d0ab2fc80 100644 --- a/scripts/build-assets.mjs +++ b/scripts/build-assets.mjs @@ -1,20 +1,34 @@ /* - * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-FileCopyrightText: syuilo and misskey-project * SPDX-License-Identifier: AGPL-3.0-only */ import * as fs from 'node:fs/promises'; import * as path from 'node:path'; +import { fileURLToPath } from 'node:url'; import cssnano from 'cssnano'; +import * as yaml from 'js-yaml'; import postcss from 'postcss'; import * as terser from 'terser'; import { build as buildLocales } from '../locales/index.js'; import generateDTS from '../locales/generateDTS.js'; import meta from '../package.json' assert { type: "json" }; +import buildTarball from './tarball.mjs'; + +const configDir = fileURLToPath(new URL('../.config', import.meta.url)); +const configPath = process.env.MISSKEY_CONFIG_YML + ? path.resolve(configDir, process.env.MISSKEY_CONFIG_YML) + : process.env.NODE_ENV === 'test' + ? path.resolve(configDir, 'test.yml') + : path.resolve(configDir, 'default.yml'); let locales = buildLocales(); +async function loadConfig() { + return fs.readFile(configPath, 'utf-8').then(data => yaml.load(data)).catch(() => null); +} + async function copyFrontendFonts() { await fs.cp('./packages/frontend/node_modules/three/examples/fonts', './built/_frontend_dist_/fonts', { dereference: true, recursive: true }); } @@ -35,13 +49,6 @@ async function copyFrontendLocales() { } } -async function copyFrontendShikiAssets() { - await fs.cp('./packages/frontend/node_modules/shiki/dist', './built/_frontend_dist_/shiki/dist', { dereference: true, recursive: true }); - await fs.cp('./packages/frontend/node_modules/shiki/languages', './built/_frontend_dist_/shiki/languages', { dereference: true, recursive: true }); - await fs.cp('./packages/frontend/node_modules/aiscript-vscode/aiscript/syntaxes', './built/_frontend_dist_/shiki/languages', { dereference: true, recursive: true }); - await fs.cp('./packages/frontend/node_modules/shiki/themes', './built/_frontend_dist_/shiki/themes', { dereference: true, recursive: true }); -} - async function copyBackendViews() { await fs.cp('./packages/backend/src/server/web/views', './packages/backend/built/server/web/views', { recursive: true }); } @@ -81,16 +88,16 @@ async function build() { copyFrontendFonts(), copyFrontendTablerIcons(), copyFrontendLocales(), - copyFrontendShikiAssets(), copyBackendViews(), buildBackendScript(), buildBackendStyle(), + loadConfig().then(config => config?.publishTarballInsteadOfProvideRepositoryUrl && buildTarball()), ]); } await build(); -if (process.argv.includes("--watch")) { +if (process.argv.includes('--watch')) { const watcher = fs.watch('./locales'); for await (const event of watcher) { const filename = event.filename?.replaceAll('\\', '/'); diff --git a/scripts/build-pre.js b/scripts/build-pre.js index ed75aa6553..a90d53c75d 100644 --- a/scripts/build-pre.js +++ b/scripts/build-pre.js @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-FileCopyrightText: syuilo and misskey-project * SPDX-License-Identifier: AGPL-3.0-only */ diff --git a/scripts/clean-all.js b/scripts/clean-all.js index e4f5acae0d..3df2f2ceff 100644 --- a/scripts/clean-all.js +++ b/scripts/clean-all.js @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-FileCopyrightText: syuilo and misskey-project * SPDX-License-Identifier: AGPL-3.0-only */ @@ -17,6 +17,15 @@ const fs = require('fs'); fs.rmSync(__dirname + '/../packages/sw/node_modules', { recursive: true, force: true }); fs.rmSync(__dirname + '/../packages/megalodon/lib', { recursive: true, force: true }); + + fs.rmSync(__dirname + '/../packages/misskey-js/built', { recursive: true, force: true }); + fs.rmSync(__dirname + '/../packages/misskey-js/node_modules', { recursive: true, force: true }); + + fs.rmSync(__dirname + '/../packages/misskey-reversi/built', { recursive: true, force: true }); + fs.rmSync(__dirname + '/../packages/misskey-reversi/node_modules', { recursive: true, force: true }); + + fs.rmSync(__dirname + '/../packages/misskey-bubble-game/built', { recursive: true, force: true }); + fs.rmSync(__dirname + '/../packages/misskey-bubble-game/node_modules', { recursive: true, force: true }); fs.rmSync(__dirname + '/../built', { recursive: true, force: true }); fs.rmSync(__dirname + '/../node_modules', { recursive: true, force: true }); diff --git a/scripts/clean.js b/scripts/clean.js index df1d33888d..6d8182fec2 100644 --- a/scripts/clean.js +++ b/scripts/clean.js @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-FileCopyrightText: syuilo and misskey-project * SPDX-License-Identifier: AGPL-3.0-only */ @@ -9,6 +9,9 @@ const fs = require('fs'); fs.rmSync(__dirname + '/../packages/backend/built', { recursive: true, force: true }); fs.rmSync(__dirname + '/../packages/frontend/built', { recursive: true, force: true }); fs.rmSync(__dirname + '/../packages/sw/built', { recursive: true, force: true }); + fs.rmSync(__dirname + '/../packages/misskey-js/built', { recursive: true, force: true }); + fs.rmSync(__dirname + '/../packages/misskey-reversi/built', { recursive: true, force: true }); + fs.rmSync(__dirname + '/../packages/misskey-bubble-game/built', { recursive: true, force: true }); fs.rmSync(__dirname + '/../built', { recursive: true, force: true }); fs.rmSync(__dirname + '/../packages/megalodon/lib', { recursive: true, force: true }); })(); diff --git a/scripts/dev.mjs b/scripts/dev.mjs index 43d9496f3c..e00b2e254d 100644 --- a/scripts/dev.mjs +++ b/scripts/dev.mjs @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-FileCopyrightText: syuilo and misskey-project * SPDX-License-Identifier: AGPL-3.0-only */ @@ -28,7 +28,7 @@ await execa('pnpm', ['build-assets'], { stderr: process.stderr, }); -await execa('pnpm', ['--filter', 'misskey-js', 'build'], { +await execa('pnpm', ['--filter', 'misskey-js', 'ts'], { cwd: _dirname + '/../', stdout: process.stdout, stderr: process.stderr, @@ -40,6 +40,18 @@ await execa("pnpm", ['--filter', 'megalodon', 'build'], { stderr: process.stderr, }); +await execa('pnpm', ['--filter', 'misskey-reversi', 'build:tsc'], { + cwd: _dirname + '/../', + stdout: process.stdout, + stderr: process.stderr, +}); + +await execa('pnpm', ['--filter', 'misskey-bubble-game', 'build:tsc'], { + cwd: _dirname + '/../', + stdout: process.stdout, + stderr: process.stderr, +}); + execa('pnpm', ['build-pre', '--watch'], { cwd: _dirname + '/../', stdout: process.stdout, @@ -58,7 +70,7 @@ execa('pnpm', ['--filter', 'backend', 'dev'], { stderr: process.stderr, }); -execa('pnpm', ['--filter', 'frontend', 'dev'], { +execa('pnpm', ['--filter', 'frontend', process.env.MK_DEV_PREFER === 'backend' ? 'watch' : 'dev'], { cwd: _dirname + '/../', stdout: process.stdout, stderr: process.stderr, @@ -75,3 +87,15 @@ execa('pnpm', ['--filter', 'misskey-js', 'watch'], { stdout: process.stdout, stderr: process.stderr, }); + +execa('pnpm', ['--filter', 'misskey-reversi', 'watch'], { + cwd: _dirname + '/../', + stdout: process.stdout, + stderr: process.stderr, +}); + +execa('pnpm', ['--filter', 'misskey-bubble-game', 'watch'], { + cwd: _dirname + '/../', + stdout: process.stdout, + stderr: process.stderr, +}); diff --git a/scripts/tarball.mjs b/scripts/tarball.mjs new file mode 100644 index 0000000000..fbb833d94e --- /dev/null +++ b/scripts/tarball.mjs @@ -0,0 +1,32 @@ +import { createWriteStream } from 'node:fs'; +import { mkdir } from 'node:fs/promises'; +import { resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import glob from 'fast-glob'; +import walk from 'ignore-walk'; +import Pack from 'tar/lib/pack.js'; +import meta from '../package.json' assert { type: "json" }; + +const cwd = fileURLToPath(new URL('..', import.meta.url)); +const ignore = [ + '**/.git/**/*', + '**/*ignore', + '**/.gitmodules', + // Exclude files you don't want to include in the tarball here +]; + +export default async function build() { + const mkdirPromise = mkdir(resolve(cwd, 'built', 'tarball'), { recursive: true }); + const pack = new Pack({ cwd, gzip: true }); + const patterns = await walk({ path: cwd, ignoreFiles: ['.gitignore'] }); + + for await (const entry of glob.stream(patterns, { cwd, ignore, dot: true })) { + pack.add(entry); + } + + pack.end(); + + await mkdirPromise; + + pack.pipe(createWriteStream(resolve(cwd, 'built', 'tarball', `sharkey-${meta.version}.tar.gz`))); +} |