feat: provide tarball

This commit is contained in:
Acid Chicken (硫酸鶏) 2024-02-12 00:36:18 +09:00
parent 4bdaf26133
commit c27eba4d39
No known key found for this signature in database
GPG Key ID: 3E87B98A3F6BAB99
5 changed files with 73 additions and 3 deletions

View File

@ -48,8 +48,8 @@
"lodash": "4.17.21"
},
"dependencies": {
"execa": "8.0.1",
"cssnano": "6.0.3",
"execa": "8.0.1",
"js-yaml": "4.1.0",
"postcss": "8.4.33",
"terser": "5.27.0",
@ -61,8 +61,10 @@
"cross-env": "7.0.3",
"cypress": "13.6.3",
"eslint": "8.56.0",
"fast-glob": "3.3.2",
"ncp": "2.0.0",
"start-server-and-test": "2.0.3",
"ncp": "2.0.0"
"tar": "6.2.0"
},
"optionalDependencies": {
"@tensorflow/tfjs-core": "4.4.0"

View File

@ -51,6 +51,7 @@ const clientAssets = `${_dirname}/../../../../frontend/assets/`;
const assets = `${_dirname}/../../../../../built/_frontend_dist_/`;
const swAssets = `${_dirname}/../../../../../built/_sw_dist_/`;
const viteOut = `${_dirname}/../../../../../built/_vite_/`;
const tarball = `${_dirname}/../../../../../built/tarball/`;
@Injectable()
export class ClientServerService {
@ -291,6 +292,13 @@ export class ClientServerService {
decorateReply: false,
});
fastify.register(fastifyStatic, {
root: tarball,
prefix: '/tarball/',
immutable: true,
decorateReply: false,
});
fastify.get('/favicon.ico', async (request, reply) => {
return reply.sendFile('/favicon.ico', staticAssets);
});

View File

@ -86,6 +86,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<FormLink :to="`/.well-known/nodeinfo`" external>nodeinfo</FormLink>
<FormLink :to="`/robots.txt`" external>robots.txt</FormLink>
<FormLink :to="`/manifest.json`" external>manifest.json</FormLink>
<FormLink :to="`/tarball/misskey-${version}.tar.gz`" external>source code</FormLink>
</div>
</FormSection>
</div>

View File

@ -50,12 +50,18 @@ importers:
eslint:
specifier: 8.56.0
version: 8.56.0
fast-glob:
specifier: 3.3.2
version: 3.3.2
ncp:
specifier: 2.0.0
version: 2.0.0
start-server-and-test:
specifier: 2.0.3
version: 2.0.3
tar:
specifier: 6.2.0
version: 6.2.0
packages/backend:
dependencies:
@ -15456,7 +15462,6 @@ packages:
/minipass@5.0.0:
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
engines: {node: '>=8'}
dev: false
/minipass@7.0.4:
resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
@ -19095,6 +19100,18 @@ packages:
mkdirp: 1.0.4
yallist: 4.0.0
/tar@6.2.0:
resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==}
engines: {node: '>=10'}
dependencies:
chownr: 2.0.0
fs-minipass: 2.1.0
minipass: 5.0.0
minizlib: 2.1.2
mkdirp: 1.0.4
yallist: 4.0.0
dev: true
/taskkill@5.0.0:
resolution: {integrity: sha512-+HRtZ40Vc+6YfCDWCeAsixwxJgMbPY4HHuTgzPYH3JXvqHWUlsCfy+ylXlAKhFNcuLp4xVeWeFBUhDk+7KYUvQ==}
engines: {node: '>=14.16'}

42
scripts/tarball.mjs Normal file
View File

@ -0,0 +1,42 @@
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 Pack from 'tar/lib/pack.js';
import meta from '../package.json' assert { type: "json" };
const cwd = fileURLToPath(new URL('..', import.meta.url));
const mkdirPromise = mkdir(resolve(cwd, 'built', 'tarball'), { recursive: true });
const patterns = [
'{assets,fluent-emojis,locales,misskey-assets}/**/*',
'packages/.config/example.yml',
'packages/{backend,frontend,misskey-bubble-game,misskey-js,misskey-js/generator,misskey-reversi,sw}/{src/**/*,.swcrc,*}',
'packages/backend/{assets,migration,nsfw-model}/**/*',
'packages/frontend/{.storybook,@types,assets,lib,public}/**/*',
'!packages/frontend/.storybook/{locale.ts,themes.ts,*.js}',
'!packages/misskey-js/CONTRIBUTING.md',
'packages/meta.json',
'scripts/{changelog-checker/{src/**/*,*},*}',
'.node-version',
'.npmrc',
'CHANGELOD.md',
'COPYING',
'LICENSE',
'README.md',
'SECURITY.md',
'package.json',
'pnpm-lock.yaml',
'pnpm-workspace.yaml',
];
const pack = new Pack({ cwd, gzip: true });
for await (const entry of glob.stream(patterns)) {
pack.add(entry);
}
pack.end();
await mkdirPromise;
pack.pipe(createWriteStream(resolve(cwd, 'built', 'tarball', `misskey-${meta.version}.tar.gz`)));