feat: provide tarball (#13260)

* feat: provide tarball

* build: pack on build-assets

* chore: use ignore-walk

* chore: debug

* build: dependencies
This commit is contained in:
Acid Chicken (硫酸鶏)
2024-02-12 01:02:27 +00:00
committed by GitHub
parent 4bdaf26133
commit 3dc095d1c9
6 changed files with 78 additions and 4 deletions

32
scripts/tarball.mjs Normal file
View File

@@ -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`)));
}