From 3dc095d1c9ae075b28efb521cf3d76961efb6593 Mon Sep 17 00:00:00 2001 From: "Acid Chicken (硫酸鶏)" Date: Mon, 12 Feb 2024 01:02:27 +0000 Subject: feat: provide tarball (#13260) * feat: provide tarball * build: pack on build-assets * chore: use ignore-walk * chore: debug * build: dependencies --- scripts/tarball.mjs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 scripts/tarball.mjs (limited to 'scripts/tarball.mjs') diff --git a/scripts/tarball.mjs b/scripts/tarball.mjs new file mode 100644 index 0000000000..936a43d270 --- /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', `misskey-${meta.version}.tar.gz`))); +} -- cgit v1.2.3-freya