Skip to content

Commit

Permalink
feat: provide tarball (misskey-dev#13260)
Browse files Browse the repository at this point in the history
* feat: provide tarball

* build: pack on build-assets

* chore: use ignore-walk

* chore: debug

* build: dependencies
  • Loading branch information
acid-chicken authored and AyumuNekozuki committed Feb 16, 2024
1 parent f349861 commit d9d183c
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 4 deletions.
9 changes: 6 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,13 @@
"lodash": "4.17.21"
},
"dependencies": {
"execa": "8.0.1",
"cssnano": "6.0.3",
"execa": "8.0.1",
"fast-glob": "3.3.2",
"ignore-walk": "6.0.4",
"js-yaml": "4.1.0",
"postcss": "8.4.33",
"tar": "6.2.0",
"terser": "5.27.0",
"typescript": "5.3.3"
},
Expand All @@ -61,8 +64,8 @@
"cross-env": "7.0.3",
"cypress": "13.6.3",
"eslint": "8.56.0",
"start-server-and-test": "2.0.3",
"ncp": "2.0.0"
"ncp": "2.0.0",
"start-server-and-test": "2.0.3"
},
"optionalDependencies": {
"@tensorflow/tfjs-core": "4.4.0"
Expand Down
8 changes: 8 additions & 0 deletions packages/backend/src/server/web/ClientServerService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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);
});
Expand Down
1 change: 1 addition & 0 deletions packages/frontend/src/pages/about.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
28 changes: 28 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion scripts/build-assets.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ 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';

let locales = buildLocales();

Expand Down Expand Up @@ -77,12 +78,13 @@ async function build() {
copyBackendViews(),
buildBackendScript(),
buildBackendStyle(),
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('\\', '/');
Expand Down
32 changes: 32 additions & 0 deletions scripts/tarball.mjs
Original file line number Diff line number Diff line change
@@ -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', `misskey-${meta.version}.tar.gz`)));
}

0 comments on commit d9d183c

Please sign in to comment.