diff options
| author | woxtu <woxtup@gmail.com> | 2023-09-07 16:56:17 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-07 16:56:17 +0900 |
| commit | 32f594993595db316865bf1c99d7b1d7c92b1b97 (patch) | |
| tree | e324563da9c61adf328b5724e155d9f893e42e86 /scripts | |
| parent | chore(frontend): renote of note in sensitive channel is now home renote by de... (diff) | |
| download | sharkey-32f594993595db316865bf1c99d7b1d7c92b1b97.tar.gz sharkey-32f594993595db316865bf1c99d7b1d7c92b1b97.tar.bz2 sharkey-32f594993595db316865bf1c99d7b1d7c92b1b97.zip | |
chore: Goodbye gulp (#11447)
* Add a script for building assets
* Replace with script executions
* Remove gulp dependencies
* Fix dependencies
---------
Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/build-assets.mjs | 87 | ||||
| -rw-r--r-- | scripts/dev.mjs | 8 |
2 files changed, 94 insertions, 1 deletions
diff --git a/scripts/build-assets.mjs b/scripts/build-assets.mjs new file mode 100644 index 0000000000..9e411fe868 --- /dev/null +++ b/scripts/build-assets.mjs @@ -0,0 +1,87 @@ +/* + * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import * as fs from 'node:fs/promises'; +import * as path from 'node:path'; +import cssnano from 'cssnano'; +import postcss from 'postcss'; +import * as terser from 'terser'; + +import locales from '../locales/index.js'; +import meta from '../package.json' assert { type: "json" }; + +async function copyFrontendFonts() { + await fs.cp('./packages/frontend/node_modules/three/examples/fonts', './built/_frontend_dist_/fonts', { dereference: true, recursive: true }); +} + +async function copyFrontendTablerIcons() { + await fs.cp('./packages/frontend/node_modules/@tabler/icons-webfont', './built/_frontend_dist_/tabler-icons', { dereference: true, recursive: true }); +} + +async function copyFrontendLocales() { + await fs.mkdir('./built/_frontend_dist_/locales', { recursive: true }); + + const v = { '_version_': meta.version }; + + for (const [lang, locale] of Object.entries(locales)) { + await fs.writeFile(`./built/_frontend_dist_/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8'); + } +} + +async function copyBackendViews() { + await fs.cp('./packages/backend/src/server/web/views', './packages/backend/built/server/web/views', { recursive: true }); +} + +async function buildBackendScript() { + await fs.mkdir('./packages/backend/built/server/web', { recursive: true }); + + for (const file of [ + './packages/backend/src/server/web/boot.js', + './packages/backend/src/server/web/bios.js', + './packages/backend/src/server/web/cli.js' + ]) { + let source = await fs.readFile(file, { encoding: 'utf-8' }); + source = source.replaceAll('LANGS', JSON.stringify(Object.keys(locales))); + const { code } = await terser.minify(source, { toplevel: true }); + await fs.writeFile(`./packages/backend/built/server/web/${path.basename(file)}`, code); + } +} + +async function buildBackendStyle() { + await fs.mkdir('./packages/backend/built/server/web', { recursive: true }); + + for (const file of [ + './packages/backend/src/server/web/style.css', + './packages/backend/src/server/web/bios.css', + './packages/backend/src/server/web/cli.css', + './packages/backend/src/server/web/error.css' + ]) { + const source = await fs.readFile(file, { encoding: 'utf-8' }); + const { css } = await postcss([cssnano({ zindex: false })]).process(source, { from: undefined }); + await fs.writeFile(`./packages/backend/built/server/web/${path.basename(file)}`, css); + } +} + +async function build() { + await Promise.all([ + copyFrontendFonts(), + copyFrontendTablerIcons(), + copyFrontendLocales(), + copyBackendViews(), + buildBackendScript(), + buildBackendStyle(), + ]); +} + +await build(); + +if (process.argv.includes("--watch")) { + const watcher = fs.watch('./packages', { recursive: true }); + for await (const event of watcher) { + if (/^[a-z]+\/src/.test(event.filename)) { + await build(); + } + } +} diff --git a/scripts/dev.mjs b/scripts/dev.mjs index 5240a5c4a8..655ad5ef13 100644 --- a/scripts/dev.mjs +++ b/scripts/dev.mjs @@ -23,7 +23,13 @@ await execa('pnpm', ['build-pre'], { stderr: process.stderr, }); -execa('pnpm', ['exec', 'gulp', 'watch'], { +await execa('pnpm', ['build-assets'], { + cwd: _dirname + '/../', + stdout: process.stdout, + stderr: process.stderr, +}); + +execa('pnpm', ['build-assets', '--watch'], { cwd: _dirname + '/../', stdout: process.stdout, stderr: process.stderr, |